From 63aa6282865d2794845d956e89779f24444704d7 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Fri, 16 Dec 2016 18:41:33 -0500 Subject: [PATCH 1571/4131] drm/amdkfd: Avoid validating PD PT BOs when updating PTE When update_gpuvm_pte() is called during memory eviction, PD PT BOs are already validated, so we move the validation out of update_gpuvm_pte(). Change-Id: I732761215a404dedd28030dcb079be009904d0a0 Signed-off-by: Yong Zhao --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index 7624d37..27205a0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -1014,12 +1014,6 @@ static int update_gpuvm_pte(struct amdgpu_device *adev, bo_va = entry->bo_va; vm = bo_va->vm; bo = bo_va->bo; - /* Validate PT / PTs */ - ret = validate_pt_pd_bos(vm); - if (ret != 0) { - pr_err("validate_pt_pd_bos failed\n"); - return ret; - } /* Update the page directory */ ret = amdgpu_vm_update_page_directory(adev, vm); @@ -1064,6 +1058,15 @@ static int map_bo_to_gpuvm(struct amdgpu_device *adev, return ret; } + /* PT BOs may be created during amdgpu_vm_bo_map() call, + * so we have to validate the newly created PT BOs. + */ + ret = validate_pt_pd_bos(entry->bo_va->vm); + if (ret != 0) { + pr_err("validate_pt_pd_bos() failed\n"); + return ret; + } + ret = update_gpuvm_pte(adev, entry, sync); if (ret != 0) { pr_err("update_gpuvm_pte() failed\n"); @@ -1330,7 +1333,6 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu( } } - list_for_each_entry(entry, &mem->bo_va_list, bo_list) { if (entry->bo_va->vm == vm && !entry->is_mapped) { if (mem->evicted) { -- 2.7.4