mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
drm/xe: Use ttm_bo_access in xe_vm_snapshot_capture_delayed
Non-contiguous mapping of BO in VRAM doesn't work, use ttm_bo_access
instead.
v2:
- Fix error handling
Fixes: 0eb2a18a8f ("drm/xe: Implement VM snapshot support for BO's and userptr")
Suggested-by: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241126174615.2665852-7-matthew.brost@intel.com
This commit is contained in:
parent
b6308aaa24
commit
5f7bec831f
|
|
@ -3310,7 +3310,6 @@ void xe_vm_snapshot_capture_delayed(struct xe_vm_snapshot *snap)
|
|||
|
||||
for (int i = 0; i < snap->num_snaps; i++) {
|
||||
struct xe_bo *bo = snap->snap[i].bo;
|
||||
struct iosys_map src;
|
||||
int err;
|
||||
|
||||
if (IS_ERR(snap->snap[i].data))
|
||||
|
|
@ -3323,16 +3322,12 @@ void xe_vm_snapshot_capture_delayed(struct xe_vm_snapshot *snap)
|
|||
}
|
||||
|
||||
if (bo) {
|
||||
xe_bo_lock(bo, false);
|
||||
err = ttm_bo_vmap(&bo->ttm, &src);
|
||||
if (!err) {
|
||||
xe_map_memcpy_from(xe_bo_device(bo),
|
||||
snap->snap[i].data,
|
||||
&src, snap->snap[i].bo_ofs,
|
||||
snap->snap[i].len);
|
||||
ttm_bo_vunmap(&bo->ttm, &src);
|
||||
}
|
||||
xe_bo_unlock(bo);
|
||||
err = ttm_bo_access(&bo->ttm, snap->snap[i].bo_ofs,
|
||||
snap->snap[i].data, snap->snap[i].len, 0);
|
||||
if (!(err < 0) && err != snap->snap[i].len)
|
||||
err = -EIO;
|
||||
else if (!(err < 0))
|
||||
err = 0;
|
||||
} else {
|
||||
void __user *userptr = (void __user *)(size_t)snap->snap[i].bo_ofs;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user