]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/xe2_hpg: Fix handling of Wa_14019988906 & Wa_14019877138
authorMatt Roper <matthew.d.roper@intel.com>
Thu, 5 Feb 2026 22:05:09 +0000 (14:05 -0800)
committerMatt Roper <matthew.d.roper@intel.com>
Tue, 10 Feb 2026 15:41:48 +0000 (07:41 -0800)
The PSS_CHICKEN register has been part of the RCS engine's LRC since it
was first introduced in Xe_LP.  That means that any workarounds that
adjust its value (such as Wa_14019988906 and Wa_14019877138) need to be
implemented in the lrc_was[] table so that they become part of the
default LRC from which all subsequent LRCs are copied.  Although these
workarounds were implemented correctly on most platforms, they were
incorrectly placed on the engine_was[] table for Xe2_HPG.

Move the workarounds to the proper lrc_was[] table and switch the
'xe_rtp_match_first_render_or_compute' rule to specifically match the
RCS since that's the engine whose LRC manages the register.

Bspec: 65182
Fixes: 7f3ee7d88058 ("drm/xe/xe2hpg: Add initial GT workarounds")
Reviewed-by: Shekhar Chauhan <shekhar.chauhan@intel.com>
Link: https://patch.msgid.link/20260205220508.51905-2-matthew.d.roper@intel.com
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
drivers/gpu/drm/xe/xe_wa.c

index 682865f1fc1618a6701c602fe8d4210b09d54327..843ce9fe7aab1bb088c1c9dbb2823fabfd0f0908 100644 (file)
@@ -592,16 +592,6 @@ static const struct xe_rtp_entry_sr engine_was[] = {
                       FUNC(xe_rtp_match_first_render_or_compute)),
          XE_RTP_ACTIONS(SET(ROW_CHICKEN, EARLY_EOT_DIS))
        },
-       { XE_RTP_NAME("14019988906"),
-         XE_RTP_RULES(GRAPHICS_VERSION_RANGE(2001, 2002),
-                      FUNC(xe_rtp_match_first_render_or_compute)),
-         XE_RTP_ACTIONS(SET(XEHP_PSS_CHICKEN, FLSH_IGNORES_PSD))
-       },
-       { XE_RTP_NAME("14019877138"),
-         XE_RTP_RULES(GRAPHICS_VERSION_RANGE(2001, 2002),
-                      FUNC(xe_rtp_match_first_render_or_compute)),
-         XE_RTP_ACTIONS(SET(XEHP_PSS_CHICKEN, FD_END_COLLECT))
-       },
        { XE_RTP_NAME("14020338487"),
          XE_RTP_RULES(GRAPHICS_VERSION_RANGE(2001, 2002),
                       FUNC(xe_rtp_match_first_render_or_compute)),
@@ -895,6 +885,14 @@ static const struct xe_rtp_entry_sr lrc_was[] = {
          XE_RTP_RULES(GRAPHICS_VERSION(2001), ENGINE_CLASS(RENDER)),
          XE_RTP_ACTIONS(SET(WM_CHICKEN3, HIZ_PLANE_COMPRESSION_DIS))
        },
+       { XE_RTP_NAME("14019988906"),
+         XE_RTP_RULES(GRAPHICS_VERSION_RANGE(2001, 2002), ENGINE_CLASS(RENDER)),
+         XE_RTP_ACTIONS(SET(XEHP_PSS_CHICKEN, FLSH_IGNORES_PSD))
+       },
+       { XE_RTP_NAME("14019877138"),
+         XE_RTP_RULES(GRAPHICS_VERSION_RANGE(2001, 2002), ENGINE_CLASS(RENDER)),
+         XE_RTP_ACTIONS(SET(XEHP_PSS_CHICKEN, FD_END_COLLECT))
+       },
        { XE_RTP_NAME("14021490052"),
          XE_RTP_RULES(GRAPHICS_VERSION(2001), ENGINE_CLASS(RENDER)),
          XE_RTP_ACTIONS(SET(FF_MODE,