]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe: Use xe_ggtt_map_bo_unlocked for resume
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Mon, 5 May 2025 12:19:14 +0000 (14:19 +0200)
committerMaarten Lankhorst <dev@lankhorst.se>
Mon, 9 Jun 2025 08:21:44 +0000 (10:21 +0200)
This is the first step to hide the details of struct xe_ggtt.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://lore.kernel.org/r/20250505121924.921544-2-dev@lankhorst.se
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
drivers/gpu/drm/xe/xe_bo_evict.c
drivers/gpu/drm/xe/xe_ggtt.c
drivers/gpu/drm/xe/xe_ggtt.h

index ed3746d32b27b15ec4bd3bb0f10f09d86e9d9d20..7484ce55a303d64e9229dadb9496ff31d38c1761 100644 (file)
@@ -197,9 +197,7 @@ static int xe_bo_restore_and_map_ggtt(struct xe_bo *bo)
                        if (tile != bo->tile && !(bo->flags & XE_BO_FLAG_GGTTx(tile)))
                                continue;
 
-                       mutex_lock(&tile->mem.ggtt->lock);
-                       xe_ggtt_map_bo(tile->mem.ggtt, bo);
-                       mutex_unlock(&tile->mem.ggtt->lock);
+                       xe_ggtt_map_bo_unlocked(tile->mem.ggtt, bo);
                }
        }
 
index b9a0fd5ccaba3c3a7fc4f3f1ce23e2e5ff266d40..b4bd5e7b27545a54fb3ea190e8682ff970bfdb2b 100644 (file)
@@ -636,7 +636,7 @@ bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node)
  * @ggtt: the &xe_ggtt where node will be mapped
  * @bo: the &xe_bo to be mapped
  */
-void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
+static void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 {
        u16 cache_mode = bo->flags & XE_BO_FLAG_NEEDS_UC ? XE_CACHE_NONE : XE_CACHE_WB;
        u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[cache_mode];
@@ -654,6 +654,20 @@ void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
        }
 }
 
+/**
+ * xe_ggtt_map_bo_unlocked - Restore a mapping of a BO into GGTT
+ * @ggtt: the &xe_ggtt where node will be mapped
+ * @bo: the &xe_bo to be mapped
+ *
+ * This is used to restore a GGTT mapping after suspend.
+ */
+void xe_ggtt_map_bo_unlocked(struct xe_ggtt *ggtt, struct xe_bo *bo)
+{
+       mutex_lock(&ggtt->lock);
+       xe_ggtt_map_bo(ggtt, bo);
+       mutex_unlock(&ggtt->lock);
+}
+
 static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
                                  u64 start, u64 end)
 {
index 4337a279ff3b0013f7b2b02dd56cf0d3b0168d26..d7dc3abda02cd50f6f6527674608d8e49375e0cf 100644 (file)
@@ -25,7 +25,7 @@ int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
                               u32 size, u32 align, u32 mm_flags);
 void xe_ggtt_node_remove(struct xe_ggtt_node *node, bool invalidate);
 bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node);
-void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
+void xe_ggtt_map_bo_unlocked(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
                         u64 start, u64 end);