[PATCH] drm/amdkfd: Remove skiping userptr buffer mapping when mmu notifier marks it as invalid

Xiaogang.Chen xiaogang.chen at amd.com
Sat Oct 29 00:26:32 UTC 2022


From: Xiaogang Chen <xiaogang.chen at amd.com>

mmu notifier does not always hold mm->sem during call back. That causes a race condition
between kfd userprt buffer mapping and mmu notifier which leds to gpu shadder or SDMA access
userptr buffer before it has been mapped to gpu VM. Always map userptr buffer to avoid that
though it may make some userprt buffers mapped two times.

Suggested-by:  Felix Kuehling <Felix.Kuehling at amd.com>
Signed-off-by: Xiaogang Chen <xiaogang.chen at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index da9d475d7ef2..ba72a910d0d5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -1907,16 +1907,6 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
 	 */
 	mutex_lock(&mem->process_info->lock);
 
-	/* Lock mmap-sem. If we find an invalid userptr BO, we can be
-	 * sure that the MMU notifier is no longer running
-	 * concurrently and the queues are actually stopped
-	 */
-	if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm)) {
-		mmap_write_lock(current->mm);
-		is_invalid_userptr = atomic_read(&mem->invalid);
-		mmap_write_unlock(current->mm);
-	}
-
 	mutex_lock(&mem->lock);
 
 	domain = mem->domain;
-- 
2.25.1



More information about the amd-gfx mailing list