diff options
author | Christian König <christian.koenig@amd.com> | 2017-08-24 06:32:55 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-08-29 15:27:56 -0400 |
commit | 34d7be5dc28041b95254da517fd0f0f740544ece (patch) | |
tree | 3cb6ab57a8e2e59347216a2daf24e93068c6c3e2 /drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |
parent | 87f64a76b38acaa081b2bc46c3169884b9ccd6f2 (diff) |
drm/amdgpu: fix and cleanup VM ready check
Stop checking the mapped BO itself, cause that one is
certainly not a page table.
Additional to that move the code into amdgpu_vm.c
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index db63ff5c80f2..67c37b22f8ef 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -232,6 +232,38 @@ int amdgpu_vm_validate_pt_bos(struct amdgpu_device *adev, struct amdgpu_vm *vm, | |||
232 | } | 232 | } |
233 | 233 | ||
234 | /** | 234 | /** |
235 | * amdgpu_vm_check - helper for amdgpu_vm_ready | ||
236 | */ | ||
237 | static int amdgpu_vm_check(void *param, struct amdgpu_bo *bo) | ||
238 | { | ||
239 | /* if anything is swapped out don't swap it in here, | ||
240 | just abort and wait for the next CS */ | ||
241 | if (!amdgpu_bo_gpu_accessible(bo)) | ||
242 | return -ERESTARTSYS; | ||
243 | |||
244 | if (bo->shadow && !amdgpu_bo_gpu_accessible(bo->shadow)) | ||
245 | return -ERESTARTSYS; | ||
246 | |||
247 | return 0; | ||
248 | } | ||
249 | |||
250 | /** | ||
251 | * amdgpu_vm_ready - check VM is ready for updates | ||
252 | * | ||
253 | * @adev: amdgpu device | ||
254 | * @vm: VM to check | ||
255 | * | ||
256 | * Check if all VM PDs/PTs are ready for updates | ||
257 | */ | ||
258 | bool amdgpu_vm_ready(struct amdgpu_device *adev, struct amdgpu_vm *vm) | ||
259 | { | ||
260 | if (amdgpu_vm_check(NULL, vm->root.bo)) | ||
261 | return false; | ||
262 | |||
263 | return !amdgpu_vm_validate_pt_bos(adev, vm, amdgpu_vm_check, NULL); | ||
264 | } | ||
265 | |||
266 | /** | ||
235 | * amdgpu_vm_alloc_levels - allocate the PD/PT levels | 267 | * amdgpu_vm_alloc_levels - allocate the PD/PT levels |
236 | * | 268 | * |
237 | * @adev: amdgpu_device pointer | 269 | * @adev: amdgpu_device pointer |