[PATCH 5/5] drm/xe: Move a couple static workarounds/tunings to the static list

Lucas De Marchi lucas.demarchi at intel.com
Wed Jan 29 18:51:17 UTC 2025


On Wed, Jan 29, 2025 at 03:56:27PM +0000, Tvrtko Ursulin wrote:
>One workaround and one tuning are completely static so can be moved to the
>respective static lists in xe_wa.c and xa_tunings.c respectively.

We can enable the tracker to make them show up in debugfs if needed, but
that wouldn't be in the WA file. See more details below.

>Advantage being that they will be shown in debugfs as active, when active.
>
>Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at igalia.com>
>Cc: Lucas De Marchi <lucas.demarchi at intel.com>
>Cc: Matt Roper <matthew.d.roper at intel.com>
>---
> drivers/gpu/drm/xe/xe_hw_engine.c | 22 ----------------------
> drivers/gpu/drm/xe/xe_tuning.c    |  8 ++++++++
> drivers/gpu/drm/xe/xe_wa.c        | 16 ++++++++++++++++
> 3 files changed, 24 insertions(+), 22 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c
>index fc447751fe78..423fb43a1a4a 100644
>--- a/drivers/gpu/drm/xe/xe_hw_engine.c
>+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
>@@ -437,28 +437,6 @@ hw_engine_setup_default_state(struct xe_hw_engine *hwe)
> 					   ring_cmd_cctl_val,
> 					   XE_RTP_ACTION_FLAG(ENGINE_BASE)))
> 		},
>-		/*
>-		 * To allow the GSC engine to go idle on MTL we need to enable
>-		 * idle messaging and set the hysteresis value (we use 0xA=5us
>-		 * as recommended in spec). On platforms after MTL this is
>-		 * enabled by default.
>-		 */
>-		{ XE_RTP_NAME("MTL GSCCS IDLE MSG enable"),
>-		  XE_RTP_RULES(MEDIA_VERSION(1300), ENGINE_CLASS(OTHER)),
>-		  XE_RTP_ACTIONS(CLR(RING_PSMI_CTL(0),
>-				     IDLE_MSG_DISABLE,
>-				     XE_RTP_ACTION_FLAG(ENGINE_BASE)),
>-				 FIELD_SET(RING_PWRCTX_MAXCNT(0),
>-					   IDLE_WAIT_TIME,
>-					   0xA,
>-					   XE_RTP_ACTION_FLAG(ENGINE_BASE)))
>-		},
>-		/* Enable Priority Mem Read */
>-		{ XE_RTP_NAME("Priority_Mem_Read"),
>-		  XE_RTP_RULES(GRAPHICS_VERSION_RANGE(2001, XE_RTP_END_VERSION_UNDEFINED)),
>-		  XE_RTP_ACTIONS(SET(CSFE_CHICKEN1(0), CS_PRIORITY_MEM_READ,
>-				     XE_RTP_ACTION_FLAG(ENGINE_BASE)))
>-		},
> 		{}
> 	};
>
>diff --git a/drivers/gpu/drm/xe/xe_tuning.c b/drivers/gpu/drm/xe/xe_tuning.c
>index c5c5a6fba406..f9d178ae0a73 100644
>--- a/drivers/gpu/drm/xe/xe_tuning.c
>+++ b/drivers/gpu/drm/xe/xe_tuning.c
>@@ -10,6 +10,7 @@
> #include <drm/drm_managed.h>
>
> #include "regs/xe_gt_regs.h"
>+#include "regs/xe_engine_regs.h"
> #include "xe_gt_types.h"
> #include "xe_platform_types.h"
> #include "xe_rtp.h"
>@@ -95,6 +96,13 @@ static const struct xe_rtp_entry_sr engine_tunings[] = {

these will end up as a register for guc to save restore, not the same
thing as setting up the default engine context, so there maybe side
effects of this change.

> 		       ENGINE_CLASS(RENDER)),
> 	  XE_RTP_ACTIONS(SET(SAMPLER_MODE, INDIRECT_STATE_BASE_ADDR_OVERRIDE))
> 	},
>+
>+	{ XE_RTP_NAME("Priority_Mem_Read"),
>+	  XE_RTP_RULES(GRAPHICS_VERSION_RANGE(2001, XE_RTP_END_VERSION_UNDEFINED)),
>+	  XE_RTP_ACTIONS(SET(CSFE_CHICKEN1(0), CS_PRIORITY_MEM_READ,
>+			     XE_RTP_ACTION_FLAG(ENGINE_BASE)))
>+	},
>+
> 	{}
> };
>
>diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c
>index 744dba4fdb58..1380bcf17fac 100644
>--- a/drivers/gpu/drm/xe/xe_wa.c
>+++ b/drivers/gpu/drm/xe/xe_wa.c
>@@ -458,6 +458,22 @@ static const struct xe_rtp_entry_sr engine_was[] = {
> 		       FUNC(xe_rtp_match_first_render_or_compute)),
> 	  XE_RTP_ACTIONS(SET(ROW_CHICKEN2, DISABLE_TDL_SVHS_GATING))
> 	},
>+	/*
>+	 * To allow the GSC engine to go idle on MTL we need to enable
>+	 * idle messaging and set the hysteresis value (we use 0xA=5us
>+	 * as recommended in spec). On platforms after MTL this is
>+	 * enabled by default.
>+	 */
>+	{ XE_RTP_NAME("MTL GSCCS IDLE MSG enable"),

tunning != WA... this table should only contains entries that are actual
documented hw WAs.

there's a debugfs file to dump the default context, however it seems we
are missing it for gsc.


Lucas De Marchi

>+	  XE_RTP_RULES(MEDIA_VERSION(1300), ENGINE_CLASS(OTHER)),
>+	  XE_RTP_ACTIONS(CLR(RING_PSMI_CTL(0),
>+			     IDLE_MSG_DISABLE,
>+			     XE_RTP_ACTION_FLAG(ENGINE_BASE)),
>+			 FIELD_SET(RING_PWRCTX_MAXCNT(0),
>+				   IDLE_WAIT_TIME,
>+				   0xA,
>+				   XE_RTP_ACTION_FLAG(ENGINE_BASE)))
>+	},
>
> 	/* Xe2_LPG */
>
>-- 
>2.48.0
>


More information about the Intel-xe mailing list