drm/xe: Pipeline evict / restore of pinned BOs during suspend / resume
authorMatthew Brost <matthew.brost@intel.com>
Tue, 5 Mar 2024 17:35:03 +0000 (09:35 -0800)
committerMatthew Brost <matthew.brost@intel.com>
Tue, 5 Mar 2024 19:45:51 +0000 (11:45 -0800)
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
drivers/gpu/drm/xe/xe_bo.c
drivers/gpu/drm/xe/xe_bo_evict.c

index 6603a0ea79c5af6d55bfdb3e61c7b6784e7b3604..b89ac6db68a1114d3f86fdb73ac1a4b3a6ecdccc 100644 (file)
@@ -816,7 +816,6 @@ out:
  * @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 @@ err_res_free:
  * @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:
index 7a264a9ca06e2afaca089eddbea9e5c4a2209db5..630695088b967a33967fc6ada9b723a64636239a 100644 (file)
@@ -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);