]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/amdgpu: flush delete wq after wait fence
authorYiqing Yao <yiqing.yao@amd.com>
Thu, 5 May 2022 10:12:33 +0000 (18:12 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 6 May 2022 20:56:41 +0000 (16:56 -0400)
[why]
lru_list not empty warning in sw fini during repeated device bind unbind.
There should be a amdgpu_fence_wait_empty() before the flush_delayed_work()
call as Christian suggested.

[how]
Move to do flush_delayed_work for ttm bo delayed delete wq after fence_driver_hw_fini.

Tested by: Yiqing Yao <yiqing.yao@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Yiqing Yao <yiqing.yao@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index 8b8286148617c9e0bfa5c50dcff0880dc868801a..66fbd059cf51c88713adf23993a8592a4cafeb51 100644 (file)
@@ -3972,10 +3972,6 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)
 {
        dev_info(adev->dev, "amdgpu: finishing device.\n");
        flush_delayed_work(&adev->delayed_init_work);
-       if (adev->mman.initialized) {
-               flush_delayed_work(&adev->mman.bdev.wq);
-               ttm_bo_lock_delayed_workqueue(&adev->mman.bdev);
-       }
        adev->shutdown = true;
 
        /* make sure IB test finished before entering exclusive mode
@@ -3996,6 +3992,11 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)
        }
        amdgpu_fence_driver_hw_fini(adev);
 
+       if (adev->mman.initialized) {
+               flush_delayed_work(&adev->mman.bdev.wq);
+               ttm_bo_lock_delayed_workqueue(&adev->mman.bdev);
+       }
+
        if (adev->pm_sysfs_en)
                amdgpu_pm_sysfs_fini(adev);
        if (adev->ucode_sysfs_en)