[PATCH v2 2/6] drm/xe: Use iosys_map helpers for WA BB emission

Tvrtko Ursulin tvrtko.ursulin at igalia.com
Mon Jun 2 11:19:52 UTC 2025


To properly support discrete GPUs on all platforms it is required to use
the iosys_map helpers.

To fix we emit the WA BB into an on stack buffer and copy it over using
xe_map_memcpy_to().

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at igalia.com>
Fixes: 617d824c5323 ("drm/xe: Add WA BB to capture active context utilization")
Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com
Cc: Lucas De Marchi <lucas.demarchi at intel.com>
Cc: Matt Roper <matthew.d.roper at intel.com>
---
 drivers/gpu/drm/xe/xe_lrc.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
index e81ee6c98a8a..ca7ffc7bbdc8 100644
--- a/drivers/gpu/drm/xe/xe_lrc.c
+++ b/drivers/gpu/drm/xe/xe_lrc.c
@@ -943,9 +943,10 @@ static void xe_lrc_finish(struct xe_lrc *lrc)
 #define CONTEXT_ACTIVE 1ULL
 static void xe_lrc_setup_utilization(struct xe_lrc *lrc)
 {
-	u32 *cmd;
-
-	cmd = lrc->bb_per_ctx_bo->vmap.vaddr;
+	struct xe_device *xe = lrc_to_xe(lrc);
+	unsigned int num_dw;
+	u32 batch[13];
+	u32 *cmd = batch;
 
 	*cmd++ = MI_STORE_REGISTER_MEM | MI_SRM_USE_GGTT | MI_SRM_ADD_CS_OFFSET;
 	*cmd++ = ENGINE_ID(0).addr;
@@ -957,7 +958,7 @@ static void xe_lrc_setup_utilization(struct xe_lrc *lrc)
 	*cmd++ = 0;
 	*cmd++ = lower_32_bits(CONTEXT_ACTIVE);
 
-	if (lrc_to_xe(lrc)->info.has_64bit_timestamp) {
+	if (xe->info.has_64bit_timestamp) {
 		*cmd++ = MI_STORE_DATA_IMM | MI_SDI_GGTT | MI_SDI_NUM_DW(1);
 		*cmd++ = __xe_lrc_ctx_timestamp_udw_ggtt_addr(lrc);
 		*cmd++ = 0;
@@ -966,9 +967,12 @@ static void xe_lrc_setup_utilization(struct xe_lrc *lrc)
 
 	*cmd++ = MI_BATCH_BUFFER_END;
 
+	num_dw = cmd - batch;
+	xe_map_memcpy_to(xe, &lrc->bb_per_ctx_bo->vmap, 0, batch,
+			 num_dw * sizeof(u32));
+
 	xe_lrc_write_ctx_reg(lrc, CTX_BB_PER_CTX_PTR,
 			     xe_bo_ggtt_addr(lrc->bb_per_ctx_bo) | 1);
-
 }
 
 #define PVC_CTX_ASID		(0x2e + 1)
-- 
2.48.0



More information about the Intel-xe mailing list