drm/amdkfd: Not restore userptr buffer if kfd process has been removed
authorXiaogang Chen <xiaogang.chen@amd.com>
Thu, 17 Oct 2024 05:01:24 +0000 (00:01 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 22 Oct 2024 21:50:12 +0000 (17:50 -0400)
When kfd process has been terminated not restore userptr buffer after mmu
notifier invalidates a range.

Signed-off-by: Xiaogang Chen <xiaogang.chen@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c

index fa572ba7f9fc1cc1f29f8f2371a2b707105da949..f30548f4c3b3e2fd7f32e8d71d7ab5d27fd4786e 100644 (file)
@@ -2524,11 +2524,14 @@ int amdgpu_amdkfd_evict_userptr(struct mmu_interval_notifier *mni,
                /* First eviction, stop the queues */
                r = kgd2kfd_quiesce_mm(mni->mm,
                                       KFD_QUEUE_EVICTION_TRIGGER_USERPTR);
-               if (r)
+
+               if (r && r != -ESRCH)
                        pr_err("Failed to quiesce KFD\n");
-               queue_delayed_work(system_freezable_wq,
-                       &process_info->restore_userptr_work,
-                       msecs_to_jiffies(AMDGPU_USERPTR_RESTORE_DELAY_MS));
+
+               if (r != -ESRCH)
+                       queue_delayed_work(system_freezable_wq,
+                               &process_info->restore_userptr_work,
+                               msecs_to_jiffies(AMDGPU_USERPTR_RESTORE_DELAY_MS));
        }
        mutex_unlock(&process_info->notifier_lock);