aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2018-04-19 07:58:42 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-05-24 11:07:53 -0400
commita7f91061c60ad9cac2e6a03b642be6a4f88b3662 (patch)
treeda33dfc09607d8808947d2a7fb2f4180b5dcfdff
parent789f3317ed33e34fa97c8918c075c68a62e51a4d (diff)
drm/amdgpu: kmap PDs/PTs in amdgpu_vm_update_directories
In theory it is possible that PDs/PTs can move without eviction. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com> Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 4d88b060fbde..a31afac8e8e9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -242,13 +242,6 @@ int amdgpu_vm_validate_pt_bos(struct amdgpu_device *adev, struct amdgpu_vm *vm,
242 spin_unlock(&glob->lru_lock); 242 spin_unlock(&glob->lru_lock);
243 } 243 }
244 244
245 if (bo->tbo.type == ttm_bo_type_kernel &&
246 vm->use_cpu_for_update) {
247 r = amdgpu_bo_kmap(bo, NULL);
248 if (r)
249 break;
250 }
251
252 if (bo->tbo.type != ttm_bo_type_kernel) { 245 if (bo->tbo.type != ttm_bo_type_kernel) {
253 spin_lock(&vm->moved_lock); 246 spin_lock(&vm->moved_lock);
254 list_move(&bo_base->vm_status, &vm->moved); 247 list_move(&bo_base->vm_status, &vm->moved);
@@ -940,6 +933,14 @@ restart:
940 params.adev = adev; 933 params.adev = adev;
941 934
942 if (vm->use_cpu_for_update) { 935 if (vm->use_cpu_for_update) {
936 struct amdgpu_vm_bo_base *bo_base;
937
938 list_for_each_entry(bo_base, &vm->relocated, vm_status) {
939 r = amdgpu_bo_kmap(bo_base->bo, NULL);
940 if (unlikely(r))
941 return r;
942 }
943
943 r = amdgpu_vm_wait_pd(adev, vm, AMDGPU_FENCE_OWNER_VM); 944 r = amdgpu_vm_wait_pd(adev, vm, AMDGPU_FENCE_OWNER_VM);
944 if (unlikely(r)) 945 if (unlikely(r))
945 return r; 946 return r;