Skip to contentSkip to conversation

drm/xe: Add wa_14025941587 to xe2, xe3 and xe3p platforms

PATCH New Thomas Hellström 1 participant 1 message Sep 29 1 message not in the archive Stable branch

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): 2026092940-reload-script-8bd3@gregkh

#1 lore raw

PATCH 1/1 drm/xe: Add wa_14025941587 to xe2, xe3 and xe3p platforms

From: Tangudu Tilak Tirumalesh <[email protected]>

Avoid programming the IDLEDLY timer to less than 5 microseconds. Apply wa_14025941587 to Graphics Versions 20.01 to 35.11 and Media Versions 13.01 to 35.03

v2: Use xe_rtp_match_not_sriov_vf, move to local variable
Remove warn and other knits - Matt R

v3: Add verbose comment - Tejas

v4: Restore IDLE_DLY register on engine reset.
Add it to GUC save-restore list. -Vivek

v5: Extend WA to Media Versions 13.01 to 35.03 - Vinay

v6: Avoid clearing inhibit switch - Bala
Refactor code accordingly by adding idle_reg_val.

v7: Rebased with the divide-by-zero/overflow guards living in
a separate hardening patch.

v8: Preserve the Wa_16023105232 floor (DIV_ROUND_DOWN_ULL) and the

    maxcnt == 0 guard from the hardening patch. Round up
    (DIV_ROUND_UP_ULL) the Wa_14025941587 minimum conversion instead,
    so the tick-quantized delay cannot round back below 5 us.

v9: Evaluate the Wa_16023105232 xe_gt_WARN_ON() against the value
read from hardware instead of the Wa_14025941587-bumped value, so it no longer fires on the driver's own floor. Re-check the rounded-up tick value against maxcnt and floor it if tick quantization pushed it back to/above maxcnt, logging via xe_gt_dbg since this is the driver's own value, not a hardware anomaly.

Assisted-by GitHub_Copilot:claude-opus-4.8
(cherry picked from commit 9453c528fc909076468ff10df1c2e334ca5a9b00)
(cherry picked from commit cc319238e3f6668f867beb381ce93727c69b7317)
---
 drivers/gpu/drm/xe/xe_guc_ads.c    |  2 +-
 drivers/gpu/drm/xe/xe_hw_engine.c  | 93 ++++++++++++++++++++++++------
 drivers/gpu/drm/xe/xe_wa_oob.rules |  2 +
 3 files changed, 79 insertions(+), 18 deletions(-)
drivers/gpu/drm/xe/xe_guc_ads.c +1 -1
index 886bafd31f45..2b42a1bb83b2 100644
@@ -791,7 +791,7 @@ static unsigned int guc_mmio_regset_write(struct xe_guc_ads *ads,
 		}
 	}
 
-	if (XE_GT_WA(hwe->gt, 16023105232))
+	if (XE_GT_WA(hwe->gt, 16023105232) || XE_GT_WA(hwe->gt, 14025941587))
 		guc_mmio_regset_write_one(ads, regset_map,
 					  RING_IDLEDLY(hwe->mmio_base),
 					  count++);
drivers/gpu/drm/xe/xe_hw_engine.c +76 -17

120 lines not on this page · raw message

drivers/gpu/drm/xe/xe_wa_oob.rules +2 -0
index 132a41859ab7..00c58b3ca9c2 100644
@@ -65,3 +65,5 @@
 
 14025883347	MEDIA_VERSION_RANGE(1301, 3500)
 		GRAPHICS_VERSION_RANGE(2004, 3005)
+14025941587	GRAPHICS_VERSION_RANGE(2001, 3511), FUNC(xe_rtp_match_not_sriov_vf)
+		MEDIA_VERSION_RANGE(1301, 3503), FUNC(xe_rtp_match_not_sriov_vf)
Signature · 1 line
2.55.0