Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Roper <matthew.d.roper@intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: <intel-xe@lists.freedesktop.org>,
	Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Subject: Re: [PATCH 2/2] drm/xe/xe3p_lpm: Add special check in Media GT for Main GAMCTRL
Date: Mon, 20 Oct 2025 08:47:52 -0700	[thread overview]
Message-ID: <20251020154752.GD1207432@mdroper-desk1.amr.corp.intel.com> (raw)
In-Reply-To: <20251019-xe3p-gamctrl-v1-2-ad66d3c1908f@intel.com>

On Sun, Oct 19, 2025 at 07:05:47PM -0700, Lucas De Marchi wrote:
> From: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
> 
> For Xe3p arch some subunits of an IP may be different. The GMD_ID
> register returns the Xe3p arch and dedicates the reserved field to mark
> possible subunit differences. Generally this is an under-the-hood
> implementation detail that drivers don't need to worry about, but the
> new Main_GAMCTRL may be enabled or not depending on those.
> 
> Those reserved bits are described for Xe3p as: "If Zero, No special case
> to be handled. If Non-Zero, special case to be handled by Software
> agent.". That special case is defined per Arch. So if media version is
> 35, also check the additional reserved bits. To avoid confusion with the
> usual meaning of "reserved", define them as GMD_ID_SUBIP_FLAG_MASK.
> 
> Bspec: 74201
> Signed-off-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

In the future we might want to read these out early on and stash them
somewhere for re-use in case other things come up that rely on them.
But for now they're only used for this single check, so this is fine for
now.


Matt

> ---
>  drivers/gpu/drm/xe/regs/xe_gt_regs.h |  6 ++++++
>  drivers/gpu/drm/xe/xe_guc.c          | 19 +++++++++++++++++++
>  2 files changed, 25 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> index 1876f2957c6df..3545e0be06dae 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> @@ -37,6 +37,12 @@
>  #define GMD_ID					XE_REG(0xd8c)
>  #define   GMD_ID_ARCH_MASK			REG_GENMASK(31, 22)
>  #define   GMD_ID_RELEASE_MASK			REG_GENMASK(21, 14)
> +/*
> + * Spec defines these bits as "Reserved", but then make them assume some
> + * meaning that depends on the ARCH. To avoid any confusion, call them
> + * SUBIP_FLAG_MASK.
> + */
> +#define   GMD_ID_SUBIP_FLAG_MASK		REG_GENMASK(13, 6)
>  #define   GMD_ID_REVID				REG_GENMASK(5, 0)
>  
>  #define FORCEWAKE_ACK_GSC			XE_REG(0xdf8)
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 37e3735f34e63..ecc3e091b89e6 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -1681,6 +1681,25 @@ bool xe_guc_using_main_gamctrl_queues(struct xe_guc *guc)
>  {
>  	struct xe_gt *gt = guc_to_gt(guc);
>  
> +	/*
> +	 * For Xe3p media gt (35), the GuC and the CS subunits may be still Xe3
> +	 * that lacks the Main GAMCTRL support. Reserved bits from the GMD_ID
> +	 * inform the IP version of the subunits.
> +	 */
> +	if (xe_gt_is_media_type(gt) && MEDIA_VER(gt_to_xe(gt)) == 35) {
> +		u32 val = xe_mmio_read32(&gt->mmio, GMD_ID);
> +		u32 subip = REG_FIELD_GET(GMD_ID_SUBIP_FLAG_MASK, val);
> +
> +		if (!subip)
> +			return true;
> +
> +		xe_gt_WARN(gt, subip != 1,
> +			   "GMD_ID has unknown value in the SUBIP_FLAG field - 0x%x\n",
> +			   subip);
> +
> +		return false;
> +	}
> +
>  	return GT_VER(gt) >= 35;
>  }
>  
> 
> -- 
> 2.51.0
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

  reply	other threads:[~2025-10-20 15:47 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-20  2:05 [PATCH 0/2] drm/xe/xe3p: Use main gamctrl if available Lucas De Marchi
2025-10-20  2:05 ` [PATCH 1/2] drm/xe/xe3p_lpm: Configure MAIN_GAMCTRL_QUEUE_SELECT Lucas De Marchi
2025-10-20 15:39   ` Matt Roper
2025-10-20  2:05 ` [PATCH 2/2] drm/xe/xe3p_lpm: Add special check in Media GT for Main GAMCTRL Lucas De Marchi
2025-10-20 15:47   ` Matt Roper [this message]
2025-10-20  2:13 ` ✓ CI.KUnit: success for drm/xe/xe3p: Use main gamctrl if available Patchwork
2025-10-20  2:58 ` ✓ Xe.CI.BAT: " Patchwork
2025-10-20  4:14 ` ✗ Xe.CI.Full: failure " Patchwork
2025-10-21  0:44 ` [PATCH 0/2] " Lucas De Marchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251020154752.GD1207432@mdroper-desk1.amr.corp.intel.com \
    --to=matthew.d.roper@intel.com \
    --cc=balasubramani.vivekanandan@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox