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

Felix Kuehling felix.kuehling at amd.com
Mon Oct 31 15:42:21 UTC 2022


Am 2022-10-28 um 20:26 schrieb Xiaogang.Chen:
> 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>

Reviewed-by: Felix Kuehling <Felix.Kuehling 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;


More information about the amd-gfx mailing list