drm/xe: Fix splat during error dump
Allow xe_bo_addr without lock to print debug information, such as from xe_analyze_vm. Signed-off-by: Francois Dugast <francois.dugast@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
bb95a4f9f5
commit
116d325152
@ -1545,15 +1545,18 @@ bool xe_bo_is_xe_bo(struct ttm_buffer_object *bo)
|
||||
return false;
|
||||
}
|
||||
|
||||
dma_addr_t xe_bo_addr(struct xe_bo *bo, u64 offset,
|
||||
/*
|
||||
* Resolve a BO address. There is no assert to check if the proper lock is held
|
||||
* so it should only be used in cases where it is not fatal to get the wrong
|
||||
* address, such as printing debug information, but not in cases where memory is
|
||||
* written based on this result.
|
||||
*/
|
||||
dma_addr_t __xe_bo_addr(struct xe_bo *bo, u64 offset,
|
||||
size_t page_size, bool *is_vram)
|
||||
{
|
||||
struct xe_res_cursor cur;
|
||||
u64 page;
|
||||
|
||||
if (!READ_ONCE(bo->ttm.pin_count))
|
||||
xe_bo_assert_held(bo);
|
||||
|
||||
XE_BUG_ON(page_size > PAGE_SIZE);
|
||||
page = offset >> PAGE_SHIFT;
|
||||
offset &= (PAGE_SIZE - 1);
|
||||
@ -1575,6 +1578,14 @@ dma_addr_t xe_bo_addr(struct xe_bo *bo, u64 offset,
|
||||
}
|
||||
}
|
||||
|
||||
dma_addr_t xe_bo_addr(struct xe_bo *bo, u64 offset,
|
||||
size_t page_size, bool *is_vram)
|
||||
{
|
||||
if (!READ_ONCE(bo->ttm.pin_count))
|
||||
xe_bo_assert_held(bo);
|
||||
return __xe_bo_addr(bo, offset, page_size, is_vram);
|
||||
}
|
||||
|
||||
int xe_bo_vmap(struct xe_bo *bo)
|
||||
{
|
||||
void *virtual;
|
||||
|
@ -199,6 +199,8 @@ static inline void xe_bo_unpin_map_no_vm(struct xe_bo *bo)
|
||||
}
|
||||
|
||||
bool xe_bo_is_xe_bo(struct ttm_buffer_object *bo);
|
||||
dma_addr_t __xe_bo_addr(struct xe_bo *bo, u64 offset,
|
||||
size_t page_size, bool *is_vram);
|
||||
dma_addr_t xe_bo_addr(struct xe_bo *bo, u64 offset,
|
||||
size_t page_size, bool *is_vram);
|
||||
|
||||
|
@ -3421,7 +3421,7 @@ int xe_analyze_vm(struct drm_printer *p, struct xe_vm *vm, int gt_id)
|
||||
&cur);
|
||||
addr = xe_res_dma(&cur);
|
||||
} else {
|
||||
addr = xe_bo_addr(vma->bo, 0, XE_PAGE_SIZE, &is_vram);
|
||||
addr = __xe_bo_addr(vma->bo, 0, XE_PAGE_SIZE, &is_vram);
|
||||
}
|
||||
drm_printf(p, " [%016llx-%016llx] S:0x%016llx A:%016llx %s\n",
|
||||
vma->start, vma->end, vma->end - vma->start + 1ull,
|
||||
|
Loading…
x
Reference in New Issue
Block a user