]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/amdkfd: fix restore worker race condition
authorPhilip Yang <Philip.Yang@amd.com>
Thu, 21 May 2020 13:56:58 +0000 (09:56 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 21 May 2020 21:59:45 +0000 (17:59 -0400)
In free memory of gpu path, remove bo from validate_list to make sure
restore worker don't access the BO any more, then unregister bo MMU
interval notifier. Otherwise, the restore worker will crash in the
middle of validating BO user pages if MMU interval notifer is gone.

Signed-off-by: Philip Yang <Philip.Yang@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 da8b31a53291bbe1cd63cf172d93bd5bb8ebefde..68e6e1bc8f3a524cd93b76e12a366f5202d4c3c4 100644 (file)
@@ -1302,15 +1302,15 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
                return -EBUSY;
        }
 
-       /* No more MMU notifiers */
-       amdgpu_mn_unregister(mem->bo);
-
        /* Make sure restore workers don't access the BO any more */
        bo_list_entry = &mem->validate_list;
        mutex_lock(&process_info->lock);
        list_del(&bo_list_entry->head);
        mutex_unlock(&process_info->lock);
 
+       /* No more MMU notifiers */
+       amdgpu_mn_unregister(mem->bo);
+
        ret = reserve_bo_and_cond_vms(mem, NULL, BO_VM_ALL, &ctx);
        if (unlikely(ret))
                return ret;