OSDN Git Service

drm/amdgpu: Fix unmapping of aperture
authorLijo Lazar <lijo.lazar@amd.com>
Fri, 3 Mar 2023 12:33:00 +0000 (18:03 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 13:57:46 +0000 (09:57 -0400)
When aperture size is zero, there is no mapping done.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

index 7f62826..19a3f9b 100644 (file)
@@ -4121,7 +4121,7 @@ static void amdgpu_device_unmap_mmio(struct amdgpu_device *adev)
        adev->mman.aper_base_kaddr = NULL;
 
        /* Memory manager related */
-       if (!adev->gmc.xgmi.connected_to_cpu) {
+       if (!adev->gmc.xgmi.connected_to_cpu && !adev->gmc.is_app_apu) {
                arch_phys_wc_del(adev->gmc.vram_mtrr);
                arch_io_free_memtype_wc(adev->gmc.aper_base, adev->gmc.aper_size);
        }
index f431205..725530e 100644 (file)
@@ -1080,8 +1080,7 @@ void amdgpu_bo_fini(struct amdgpu_device *adev)
        amdgpu_ttm_fini(adev);
 
        if (drm_dev_enter(adev_to_drm(adev), &idx)) {
-
-               if (!adev->gmc.xgmi.connected_to_cpu) {
+               if (!adev->gmc.xgmi.connected_to_cpu && !adev->gmc.is_app_apu) {
                        arch_phys_wc_del(adev->gmc.vram_mtrr);
                        arch_io_free_memtype_wc(adev->gmc.aper_base, adev->gmc.aper_size);
                }
index 3933432..09d1a98 100644 (file)
@@ -1844,12 +1844,13 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
                adev->mman.aper_base_kaddr = ioremap_cache(adev->gmc.aper_base,
                                adev->gmc.visible_vram_size);
 
-       else if (!adev->gmc.is_app_apu)
+       else if (adev->gmc.is_app_apu)
+               DRM_DEBUG_DRIVER(
+                       "No need to ioremap when real vram size is 0\n");
+       else
 #endif
                adev->mman.aper_base_kaddr = ioremap_wc(adev->gmc.aper_base,
                                adev->gmc.visible_vram_size);
-       else
-               DRM_DEBUG_DRIVER("No need to ioremap when real vram size is 0\n");
 #endif
 
        /*