[PATCH 2/2] drm/xe/xe2hpg: Add Wa_18041344222 for Xe2_HPG

Matt Atwood matthew.s.atwood at intel.com
Tue Aug 19 18:55:53 UTC 2025


On Wed, Aug 13, 2025 at 11:38:43AM -0700, Harish Chegondi wrote:
> Add Wa_18041344222 for Xe2_HPG that requires disabling
> the perf mode for subslice count for eustall sampling
> when the enabled slices are discontiguous.
> 
please add bspec references.
Bspec: 79472, 56024
> Cc: Matt Atwood <matthew.s.atwood at intel.com>
> Signed-off-by: Harish Chegondi <harish.chegondi at intel.com>
with the changes above
Reviewed-by: Matt Atwood <matthew.s.atwood at intel.com>

> ---
>  drivers/gpu/drm/xe/regs/xe_gt_regs.h |  1 +
>  drivers/gpu/drm/xe/xe_gt_topology.c  | 17 +++++++++++++++++
>  drivers/gpu/drm/xe/xe_gt_topology.h  |  1 +
>  drivers/gpu/drm/xe/xe_rtp.c          |  6 ++++++
>  drivers/gpu/drm/xe/xe_rtp.h          |  2 ++
>  drivers/gpu/drm/xe/xe_wa.c           |  6 ++++++
>  6 files changed, 33 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> index f96b2e2b3064..06cb6b02ec64 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> @@ -522,6 +522,7 @@
>  
>  #define TDL_CHICKEN				XE_REG_MCR(0xe5f4, XE_REG_OPTION_MASKED)
>  #define   QID_WAIT_FOR_THREAD_NOT_RUN_DISABLE	REG_BIT(12)
> +#define   EUSTALL_PERF_SAMPLING_DISABLE		REG_BIT(5)
>  
>  #define LSC_CHICKEN_BIT_0			XE_REG_MCR(0xe7c8)
>  #define   DISABLE_D8_D16_COASLESCE		REG_BIT(30)
> diff --git a/drivers/gpu/drm/xe/xe_gt_topology.c b/drivers/gpu/drm/xe/xe_gt_topology.c
> index a0baa560dd71..0ed7dc9044a5 100644
> --- a/drivers/gpu/drm/xe/xe_gt_topology.c
> +++ b/drivers/gpu/drm/xe/xe_gt_topology.c
> @@ -12,6 +12,7 @@
>  #include "regs/xe_gt_regs.h"
>  #include "xe_assert.h"
>  #include "xe_gt.h"
> +#include "xe_gt_mcr.h"
>  #include "xe_gt_printk.h"
>  #include "xe_mmio.h"
>  #include "xe_wa.h"
> @@ -328,3 +329,19 @@ bool xe_gt_has_compute_dss(struct xe_gt *gt, unsigned int dss)
>  {
>  	return test_bit(dss, gt->fuse_topo.c_dss_mask);
>  }
> +
> +bool xe_gt_has_discontiguous_dss_groups(const struct xe_gt *gt)
> +{
> +	unsigned int xecore;
> +	int last_group = -1;
> +	u16 group, instance;
> +
> +	for_each_dss_steering(xecore, gt, group, instance) {
> +		if (last_group != group) {
> +			if (group - last_group > 1)
> +				return true;
> +			last_group = group;
> +		}
> +	}
> +	return false;
> +}
> diff --git a/drivers/gpu/drm/xe/xe_gt_topology.h b/drivers/gpu/drm/xe/xe_gt_topology.h
> index c8140704ad4c..fd08b382e259 100644
> --- a/drivers/gpu/drm/xe/xe_gt_topology.h
> +++ b/drivers/gpu/drm/xe/xe_gt_topology.h
> @@ -47,4 +47,5 @@ xe_gt_topology_has_dss_in_quadrant(struct xe_gt *gt, int quad);
>  bool xe_gt_has_geometry_dss(struct xe_gt *gt, unsigned int dss);
>  bool xe_gt_has_compute_dss(struct xe_gt *gt, unsigned int dss);
>  
> +bool xe_gt_has_discontiguous_dss_groups(const struct xe_gt *gt);
>  #endif /* _XE_GT_TOPOLOGY_H_ */
> diff --git a/drivers/gpu/drm/xe/xe_rtp.c b/drivers/gpu/drm/xe/xe_rtp.c
> index 95571b87aa73..04400b4889fb 100644
> --- a/drivers/gpu/drm/xe/xe_rtp.c
> +++ b/drivers/gpu/drm/xe/xe_rtp.c
> @@ -363,3 +363,9 @@ bool xe_rtp_match_not_sriov_vf(const struct xe_gt *gt,
>  {
>  	return !IS_SRIOV_VF(gt_to_xe(gt));
>  }
> +
> +bool xe_rtp_match_gt_has_discontiguous_dss_groups(const struct xe_gt *gt,
> +						  const struct xe_hw_engine *hwe)
> +{
> +	return xe_gt_has_discontiguous_dss_groups(gt);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_rtp.h b/drivers/gpu/drm/xe/xe_rtp.h
> index 5ed6c14b9ae3..6acd1b1819d0 100644
> --- a/drivers/gpu/drm/xe/xe_rtp.h
> +++ b/drivers/gpu/drm/xe/xe_rtp.h
> @@ -477,4 +477,6 @@ bool xe_rtp_match_first_render_or_compute(const struct xe_gt *gt,
>  bool xe_rtp_match_not_sriov_vf(const struct xe_gt *gt,
>  			       const struct xe_hw_engine *hwe);
>  
> +bool xe_rtp_match_gt_has_discontiguous_dss_groups(const struct xe_gt *gt,
> +						  const struct xe_hw_engine *hwe);
>  #endif
> diff --git a/drivers/gpu/drm/xe/xe_wa.c b/drivers/gpu/drm/xe/xe_wa.c
> index 52c7df4c3afd..523973916a09 100644
> --- a/drivers/gpu/drm/xe/xe_wa.c
> +++ b/drivers/gpu/drm/xe/xe_wa.c
> @@ -612,6 +612,12 @@ static const struct xe_rtp_entry_sr engine_was[] = {
>  		       FUNC(xe_rtp_match_first_render_or_compute)),
>  	  XE_RTP_ACTIONS(SET(TDL_TSL_CHICKEN, RES_CHK_SPR_DIS))
>  	},
> +	{ XE_RTP_NAME("18041344222"),
> +	  XE_RTP_RULES(GRAPHICS_VERSION_RANGE(2001, 2002),
> +		       FUNC(xe_rtp_match_first_render_or_compute),
> +		       FUNC(xe_rtp_match_gt_has_discontiguous_dss_groups)),
> +	  XE_RTP_ACTIONS(SET(TDL_CHICKEN, EUSTALL_PERF_SAMPLING_DISABLE))
> +	},
>  
>  	/* Xe2_LPM */
>  
> -- 
> 2.48.1
> 


More information about the Intel-xe mailing list