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(>->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
next prev parent 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