mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 14:40:12 -04:00
drm/xe: Pipeline evict / restore of pinned BOs during suspend / resume
Rather than waiting for each evict / restore of pinned BOs to complete just wait on migrate exec queue to be idle once during suspend / resume. Cc: 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/20240305173503.285223-1-matthew.brost@intel.com
This commit is contained in:
@@ -816,7 +816,6 @@ static int xe_bo_move(struct ttm_buffer_object *ttm_bo, bool evict,
|
||||
* @bo: The buffer object to move.
|
||||
*
|
||||
* On successful completion, the object memory will be moved to sytem memory.
|
||||
* This function blocks until the object has been fully moved.
|
||||
*
|
||||
* This is needed to for special handling of pinned VRAM object during
|
||||
* suspend-resume.
|
||||
@@ -873,9 +872,6 @@ int xe_bo_evict_pinned(struct xe_bo *bo)
|
||||
if (ret)
|
||||
goto err_res_free;
|
||||
|
||||
dma_resv_wait_timeout(bo->ttm.base.resv, DMA_RESV_USAGE_KERNEL,
|
||||
false, MAX_SCHEDULE_TIMEOUT);
|
||||
|
||||
return 0;
|
||||
|
||||
err_res_free:
|
||||
@@ -888,7 +884,6 @@ int xe_bo_evict_pinned(struct xe_bo *bo)
|
||||
* @bo: The buffer object to move.
|
||||
*
|
||||
* On successful completion, the object memory will be moved back to VRAM.
|
||||
* This function blocks until the object has been fully moved.
|
||||
*
|
||||
* This is needed to for special handling of pinned VRAM object during
|
||||
* suspend-resume.
|
||||
@@ -930,9 +925,6 @@ int xe_bo_restore_pinned(struct xe_bo *bo)
|
||||
if (ret)
|
||||
goto err_res_free;
|
||||
|
||||
dma_resv_wait_timeout(bo->ttm.base.resv, DMA_RESV_USAGE_KERNEL,
|
||||
false, MAX_SCHEDULE_TIMEOUT);
|
||||
|
||||
return 0;
|
||||
|
||||
err_res_free:
|
||||
|
||||
@@ -220,7 +220,7 @@ int xe_bo_restore_user(struct xe_device *xe)
|
||||
list_splice_tail(&still_in_list, &xe->pinned.external_vram);
|
||||
spin_unlock(&xe->pinned.lock);
|
||||
|
||||
/* Wait for validate to complete */
|
||||
/* Wait for restore to complete */
|
||||
for_each_tile(tile, xe, id)
|
||||
xe_tile_migrate_wait(tile);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user