diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 5d7d7900ccab..015613b4f98b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -2344,6 +2344,35 @@ struct amdgpu_bo_va_mapping *amdgpu_vm_bo_lookup_mapping(struct amdgpu_vm *vm, | |||
2344 | } | 2344 | } |
2345 | 2345 | ||
2346 | /** | 2346 | /** |
2347 | * amdgpu_vm_bo_trace_cs - trace all reserved mappings | ||
2348 | * | ||
2349 | * @vm: the requested vm | ||
2350 | * @ticket: CS ticket | ||
2351 | * | ||
2352 | * Trace all mappings of BOs reserved during a command submission. | ||
2353 | */ | ||
2354 | void amdgpu_vm_bo_trace_cs(struct amdgpu_vm *vm, struct ww_acquire_ctx *ticket) | ||
2355 | { | ||
2356 | struct amdgpu_bo_va_mapping *mapping; | ||
2357 | |||
2358 | if (!trace_amdgpu_vm_bo_cs_enabled()) | ||
2359 | return; | ||
2360 | |||
2361 | for (mapping = amdgpu_vm_it_iter_first(&vm->va, 0, U64_MAX); mapping; | ||
2362 | mapping = amdgpu_vm_it_iter_next(mapping, 0, U64_MAX)) { | ||
2363 | if (mapping->bo_va && mapping->bo_va->base.bo) { | ||
2364 | struct amdgpu_bo *bo; | ||
2365 | |||
2366 | bo = mapping->bo_va->base.bo; | ||
2367 | if (READ_ONCE(bo->tbo.resv->lock.ctx) != ticket) | ||
2368 | continue; | ||
2369 | } | ||
2370 | |||
2371 | trace_amdgpu_vm_bo_cs(mapping); | ||
2372 | } | ||
2373 | } | ||
2374 | |||
2375 | /** | ||
2347 | * amdgpu_vm_bo_rmv - remove a bo to a specific vm | 2376 | * amdgpu_vm_bo_rmv - remove a bo to a specific vm |
2348 | * | 2377 | * |
2349 | * @adev: amdgpu_device pointer | 2378 | * @adev: amdgpu_device pointer |