drm/xe/bo: Gracefully handle errors from ttm_bo_move_accel_cleanup().
The function ttm_bo_move_accel_cleanup() attempts to help pipeline a move, and in doing so, needs memory allocations which may fail. Rather than failing in a state where the new resource may freed while accessed by the copy engine, sync uninterruptible and do a failsafe cleanup. v2: - Don't try to attach the signaled fence on ttm_bo_move_accel_cleanup() error. Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230626181741.32820-4-thomas.hellstrom@linux.intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
3439cc4661
commit
70ff6a999d
@ -700,6 +700,11 @@ static int xe_bo_move(struct ttm_buffer_object *ttm_bo, bool evict,
|
||||
if (!move_lacks_source) {
|
||||
ret = ttm_bo_move_accel_cleanup(ttm_bo, fence, evict,
|
||||
true, new_mem);
|
||||
if (ret) {
|
||||
dma_fence_wait(fence, false);
|
||||
ttm_bo_move_null(ttm_bo, new_mem);
|
||||
ret = 0;
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* ttm_bo_move_accel_cleanup() may blow up if
|
||||
|
Loading…
x
Reference in New Issue
Block a user