Re: [PATCH v3 1/2] drm/xe/mcr: Take vcs1/vecs1 into account for first media slice

Matt Roper <[email protected]>
Newsgroups org.freedesktop.lists.intel-xe
Message-ID <[email protected]>
On Mon, Jul 27, 2026 at 10:27:11AM -0700, Ashutosh Dixit wrote:
> vcs1 and vecs1 may also be present on the first media slice, so take
> vcs1/vecs1 also into account when determining if the first media slice is
> absent.
> 
> Bspec: 67103, 77977
> 
> Cc: Gustavo Sousa <[email protected]>
> Cc: Matt Roper <[email protected]>
> Signed-off-by: Ashutosh Dixit <[email protected]>
> ---
> v2: Bug fix
> v3: Fix for BMG (Matt Roper)
> ---
>  drivers/gpu/drm/xe/xe_gt_mcr.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt_mcr.c b/drivers/gpu/drm/xe/xe_gt_mcr.c
> index 9799ffadf85d2..8beb4006cd891 100644
> --- a/drivers/gpu/drm/xe/xe_gt_mcr.c
> +++ b/drivers/gpu/drm/xe/xe_gt_mcr.c
> @@ -452,11 +452,15 @@ static void init_steering_dss(struct xe_gt *gt)
>  
>  static void init_steering_oaddrm(struct xe_gt *gt)
>  {
> +	u64 hwe_mask = XE_HW_ENGINE_VCS0 | XE_HW_ENGINE_VECS0;
> +
> +	if (MEDIA_VERx100(gt_to_xe(gt)) >= 3500)

This will work as a short-term bandaid, but fundamentally the media
configuration isn't really a case where "old platforms were always 1/1/1
and new platforms will probably always be 2/2/2."  It's something that
can easily vary platform-by-platform or even SKU-by-SKU (e.g., bspec
70819 still shows some what was originally planned in the past for
different SKUs of a platform, even though that platform eventually
settled on something simpler).  If I recall correctly, there were also
configurations like 2/1/1 used on older platforms like DG2, but we
didn't need to worry about SCMI or OADDRM steering for MCR purposes on
those platforms so it just never came up in the code.

I'm okay landing this patch as a short-term fix for NVL and CRI, but we
should add a TODO comment or something indicating that we really should
move the "VD per SCMI" and "VE per SCMI" values into our media
descriptors so that we can easily pick the appropriate config on a
per-release / per-SKU manner to ensure we think about it on a
release-by-release basis when enabling new platforms and IP versions in
the future.


Matt

> +		hwe_mask |= XE_HW_ENGINE_VCS1 | XE_HW_ENGINE_VECS1;
>  	/*
>  	 * First instance is only terminated if the entire first media slice
> -	 * is absent (i.e., no VCS0 or VECS0).
> +	 * is absent (i.e., no engines in hwe_mask).
>  	 */
> -	if (gt->info.engine_mask & (XE_HW_ENGINE_VCS0 | XE_HW_ENGINE_VECS0))
> +	if (gt->info.engine_mask & hwe_mask)
>  		gt->steering[OADDRM].group_target = 0;
>  	else
>  		gt->steering[OADDRM].group_target = 1;
> -- 
> 2.54.0
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.