[PATCH v9 5/8] drm/xe: Allow specifying number of extra dwords at the end of wa bb emission

Tvrtko Ursulin tvrtko.ursulin at igalia.com
Wed Jul 9 10:54:52 UTC 2025


Indirect context setup will need more than one.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at igalia.com>
Cc: Lucas De Marchi <lucas.demarchi at intel.com>
---
 drivers/gpu/drm/xe/xe_lrc.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
index 229cfde91799..768cb9de48d6 100644
--- a/drivers/gpu/drm/xe/xe_lrc.c
+++ b/drivers/gpu/drm/xe/xe_lrc.c
@@ -984,6 +984,7 @@ struct bo_setup_state {
 	struct xe_lrc 		*lrc;
 	struct xe_hw_engine	*hwe;
 	size_t			max_size;
+	size_t                  reserve_dw;
 	unsigned		offset;
 	const struct bo_setup	*funcs;
 	unsigned		num_funcs;
@@ -1017,10 +1018,10 @@ static int setup_bo(struct bo_setup_state *state)
 		remain -= len;
 
 		/*
-		 * There should always be at least 1 additional dword for
-		 * the end marker
+		 * Caller has asked for at least reserve_dw to remain unused.
 		 */
-		if (len < 0 || xe_gt_WARN_ON(state->lrc->gt, remain < 1))
+		if (len < 0 ||
+		    xe_gt_WARN_ON(state->lrc->gt, remain < state->reserve_dw))
 			goto fail;
 
 		state->ptr += len;
@@ -1054,6 +1055,7 @@ static int setup_wa_bb(struct xe_lrc *lrc, struct xe_hw_engine *hwe)
 		.lrc = lrc,
 		.hwe = hwe,
 		.max_size = LRC_WA_BB_SIZE,
+		.reserve_dw = 1,
 		.offset = __xe_lrc_wa_bb_offset(lrc),
 		.funcs = funcs,
 		.num_funcs = ARRAY_SIZE(funcs),
-- 
2.48.0



More information about the Intel-xe mailing list