From: Tangudu Tilak Tirumalesh tilak.tirumalesh.tangudu@intel.com
[ Upstream commit 8d6f16f1f082881aa50ea7ae537b604dec647ed6 ]
WA 22021007897 should also be applied to Graphics Versions 30.00, 30.01 and 30.03. To make it simple, simply use the range [3000, 3003] that should be ok as there isn't a 3002 and if it's added, the WA list would need to be revisited anyway.
Cc: Matt Atwood matthew.s.atwood@intel.com Cc: Gustavo Sousa gustavo.sousa@intel.com Signed-off-by: Tangudu Tilak Tirumalesh tilak.tirumalesh.tangudu@intel.com Reviewed-by: Matt Atwood matthew.s.atwood@intel.com Link: https://lore.kernel.org/r/20250827-wa-22021007897-v1-1-96922eb52af4@intel.co... Signed-off-by: Lucas De Marchi lucas.demarchi@intel.com Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
YES
- The change extends an existing hardware workaround (WA 22021007897) to Xe3 platforms by adding a single, gated entry to the LRC workaround table. Specifically, it adds a new rule to set `COMMON_SLICE_CHICKEN4:SBE_PUSH_CONSTANT_BEHIND_FIX_ENABLE` for render engines on graphics versions 30.00–30.03: - New entry: `drivers/gpu/drm/xe/xe_wa.c:915` (name "22021007897") - Rule gating: `drivers/gpu/drm/xe/xe_wa.c:916` uses `GRAPHICS_VERSION_RANGE(3000, 3003)` with `ENGINE_CLASS(RENDER)` - Action: `drivers/gpu/drm/xe/xe_wa.c:917` sets `SBE_PUSH_CONSTANT_BEHIND_FIX_ENABLE` in `COMMON_SLICE_CHICKEN4` - This mirrors the already-present use of the same WA on Xe2 (graphics versions 2001–2002), demonstrating consistency across generations: - Existing Xe2 entry: `drivers/gpu/drm/xe/xe_wa.c:895` (name "22021007897") - Rule gating: `drivers/gpu/drm/xe/xe_wa.c:896` with `GRAPHICS_VERSION_RANGE(2001, 2002)` and `ENGINE_CLASS(RENDER)` - Action: `drivers/gpu/drm/xe/xe_wa.c:897` sets the same bit - The register and bit are well-defined in-tree, ensuring build safety and clarity of intent: - `drivers/gpu/drm/xe/regs/xe_gt_regs.h:158` defines `COMMON_SLICE_CHICKEN4` - `drivers/gpu/drm/xe/regs/xe_gt_regs.h:159` defines `SBE_PUSH_CONSTANT_BEHIND_FIX_ENABLE` (bit 12) - The WA is applied at context-restore time via the LRC path, which is the correct, minimal-impact location for such state programming: - LRC table processing call site: `drivers/gpu/drm/xe/xe_gt.c:329` calls `xe_wa_process_lrc(hwe)` - Scope and risk assessment: - Minimal and contained: a single new table entry; no API or architectural change; no behavior change outside Xe3 render engines. - Gated by hardware version and engine class, so it has no effect on other platforms. - Safe even with the version range approach: there is no 3002 today, and if a new graphics version appears, WA lists are regularly revisited as noted in the commit message. - User impact: - Workarounds address known hardware issues; enabling this WA on Xe3 likely prevents rendering corruption or instability on affected hardware. Without it, Xe3 users may encounter functional bugs. - While the commit message does not include an explicit “Cc: stable”, the change aligns with stable policy: - It is a small, targeted fix to ensure correct operation on supported hardware. - It carries low regression risk and is confined to the DRM xe driver’s WA tables.
Given the above, this is a good, low-risk bugfix candidate for backporting to stable trees that support the Xe driver and Xe3 hardware.
drivers/gpu/drm/xe/xe_wa.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c index 535067e7fb0c9..f14bdaac674bb 100644 --- a/drivers/gpu/drm/xe/xe_wa.c +++ b/drivers/gpu/drm/xe/xe_wa.c @@ -879,6 +879,10 @@ static const struct xe_rtp_entry_sr lrc_was[] = { DIS_PARTIAL_AUTOSTRIP | DIS_AUTOSTRIP)) }, + { XE_RTP_NAME("22021007897"), + XE_RTP_RULES(GRAPHICS_VERSION_RANGE(3000, 3003), ENGINE_CLASS(RENDER)), + XE_RTP_ACTIONS(SET(COMMON_SLICE_CHICKEN4, SBE_PUSH_CONSTANT_BEHIND_FIX_ENABLE)) + }, };
static __maybe_unused const struct xe_rtp_entry oob_was[] = {