All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gustavo Sousa <gustavo.sousa@intel.com>
To: Matt Roper <matthew.d.roper@intel.com>
Cc: <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH 4/7] drm/xe/rtp: Add support for matching platform-level stepping
Date: Fri, 6 Mar 2026 10:39:49 -0300	[thread overview]
Message-ID: <871phxxeje.fsf@intel.com> (raw)
In-Reply-To: <20260306005358.GW52346@mdroper-desk1.amr.corp.intel.com>

Matt Roper <matthew.d.roper@intel.com> writes:

> On Thu, Mar 05, 2026 at 02:22:56PM -0800, Matt Roper wrote:
>> On Thu, Mar 05, 2026 at 09:02:31AM -0300, Gustavo Sousa wrote:
>> > Add support for matching platform-level stepping, which will be used for
>> > an upcoming NVL-P workaround.
>> > 
>> > As support for reading platform-level stepping information is added only
>> > as needed in the driver, add a warning when the rule finds a STEP_NONE
>> > value, which is an indication that the driver is missing such a support.
>> > 
>> > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> > ---
>> >  drivers/gpu/drm/xe/xe_rtp.c       |  7 +++++++
>> >  drivers/gpu/drm/xe/xe_rtp.h       | 20 ++++++++++++++++++++
>> >  drivers/gpu/drm/xe/xe_rtp_types.h |  1 +
>> >  3 files changed, 28 insertions(+)
>> > 
>> > diff --git a/drivers/gpu/drm/xe/xe_rtp.c b/drivers/gpu/drm/xe/xe_rtp.c
>> > index 7bfdc6795ce6..991f218f1cc3 100644
>> > --- a/drivers/gpu/drm/xe/xe_rtp.c
>> > +++ b/drivers/gpu/drm/xe/xe_rtp.c
>> > @@ -55,6 +55,13 @@ static bool rule_matches(const struct xe_device *xe,
>> >  			match = xe->info.platform == r->platform &&
>> >  				xe->info.subplatform == r->subplatform;
>> >  			break;
>> > +		case XE_RTP_MATCH_PLATFORM_STEP:
>> > +			if (drm_WARN_ON(&xe->drm, xe->info.step.platform == STEP_NONE))
>> > +				return false;
>> > +
>> > +			match = xe->info.step.platform >= r->step_start &&
>> > +				xe->info.step.platform < r->step_end;
>> > +			break;
>> >  		case XE_RTP_MATCH_GRAPHICS_VERSION:
>> >  			if (drm_WARN_ON(&xe->drm, !gt))
>> >  				return false;
>> > diff --git a/drivers/gpu/drm/xe/xe_rtp.h b/drivers/gpu/drm/xe/xe_rtp.h
>> > index be4195264286..7d6daa7eb1e4 100644
>> > --- a/drivers/gpu/drm/xe/xe_rtp.h
>> > +++ b/drivers/gpu/drm/xe/xe_rtp.h
>> > @@ -35,6 +35,10 @@ struct xe_reg_sr;
>> >  	{ .match_type = XE_RTP_MATCH_SUBPLATFORM,				\
>> >  	  .platform = plat__, .subplatform = sub__ }
>> >  
>> > +#define _XE_RTP_RULE_PLATFORM_STEP(start__, end__)				\
>> > +	{ .match_type = XE_RTP_MATCH_PLATFORM_STEP,				\
>> > +	  .step_start = start__, .step_end = end__ }
>> > +
>> >  #define _XE_RTP_RULE_GRAPHICS_STEP(start__, end__)				\
>> >  	{ .match_type = XE_RTP_MATCH_GRAPHICS_STEP,				\
>> >  	  .step_start = start__, .step_end = end__ }
>> > @@ -66,6 +70,22 @@ struct xe_reg_sr;
>> >  #define XE_RTP_RULE_SUBPLATFORM(plat_, sub_)					\
>> >  	_XE_RTP_RULE_SUBPLATFORM(XE_##plat_, XE_SUBPLATFORM_##plat_##_##sub_)
>> >  
>> > +/**
>> > + * XE_RTP_RULE_PLATFORM_STEP - Create rule matching platform-level stepping
>> > + * @start_: First stepping matching the rule
>> > + * @end_: First stepping that does not match the rule
>> > + *
>> > + * Note that the range matching this rule is [ @start_, @end_ ), i.e. inclusive
>> > + * on the left, exclusive on the right.
>> > + *
>> > + * You need to make sure that proper support for reading platform-level stepping
>> > + * information is present for the target platform before using this rule.
>> > + *
>> > + * Refer to XE_RTP_RULES() for expected usage.
>> > + */
>> > +#define XE_RTP_RULE_PLATFORM_STEP(start_, end_)					\
>> > +	_XE_RTP_RULE_PLATFORM_STEP(STEP_##start_, STEP_##end_)
>> 
>> To use this effectively someone will need to pair this with another rule
>> like
>> 
>>         PLATFORM(NOVALAKE_P), PLATFORM_STEP(A2, C1)
>> 
>> and using PLATFORM_STEP() by itself without a corresponding PLATFORM()
>> or SUBPLATFORM() would be a bug.  Maybe we should just make
>> PLATFORM_STEP a rule that takes the platform as well as the stepping
>> range so that it's impossible for anyone to ever use PLATFORM_STEP
>> without tying it to a specific platform?  And also make a corresponding
>> SUBPLATFORM_STEP() rule for cases where that's relevant.  E.g.,
>> 
>>         PLATFORM_STEP(NOVALAKE_P, A2, C1)
>> 
>> or
>> 
>>         SUBPLATFORM_STEP(BATTLEMAGE, BATTLEMAGE_G21, A0, B0)
>> 
>> We'd need to update the union in struct xe_rtp_rule, but the size of the
>> union shouldn't increase.
>> 
>> What do you think?
>
> Anyway, consider this feedback optional.  I think it's fine to land
> as-is if you want.
>
> Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

Thanks!

Yep, your suggestion makes sense.  I would say that the same argument
applies to GRAPHICS_STEP and MEDIA_STEP, right?  In other words, e.g. it
doesn't make much sense to use GRAPHICS_STEP without also using
GRAPHICS_VERSION.

So we can probably go ahead with merging this as-is and then have a
follow-up series handle stepping-matching macros in a way to always
require the relevant higher-level info (i.e. platform, subplatform,
graphics version or media version)?

--
Gustavo Sousa

>
>> 
>> 
>> Matt
>> 
>> > +
>> >  /**
>> >   * XE_RTP_RULE_GRAPHICS_STEP - Create rule matching graphics stepping
>> >   * @start_: First stepping matching the rule
>> > diff --git a/drivers/gpu/drm/xe/xe_rtp_types.h b/drivers/gpu/drm/xe/xe_rtp_types.h
>> > index 6ba7f226c227..166251615be1 100644
>> > --- a/drivers/gpu/drm/xe/xe_rtp_types.h
>> > +++ b/drivers/gpu/drm/xe/xe_rtp_types.h
>> > @@ -41,6 +41,7 @@ struct xe_rtp_action {
>> >  enum {
>> >  	XE_RTP_MATCH_PLATFORM,
>> >  	XE_RTP_MATCH_SUBPLATFORM,
>> > +	XE_RTP_MATCH_PLATFORM_STEP,
>> >  	XE_RTP_MATCH_GRAPHICS_VERSION,
>> >  	XE_RTP_MATCH_GRAPHICS_VERSION_RANGE,
>> >  	XE_RTP_MATCH_GRAPHICS_VERSION_ANY_GT,
>> > 
>> > -- 
>> > 2.52.0
>> > 
>> 
>> -- 
>> Matt Roper
>> Graphics Software Engineer
>> Linux GPU Platform Enablement
>> Intel Corporation
>
> -- 
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation

  reply	other threads:[~2026-03-06 13:40 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-05 12:02 [PATCH 0/7] Extra enabling patches for NVL-P Gustavo Sousa
2026-03-05 12:02 ` [PATCH 1/7] drm/xe: Modify stepping info directly in xe_step_*_get() Gustavo Sousa
2026-03-05 22:07   ` Matt Roper
2026-03-05 12:02 ` [PATCH 2/7] drm/xe: Drop unused IS_PLATFORM_STEP() and IS_SUBPLATFORM_STEP() Gustavo Sousa
2026-03-05 22:09   ` Matt Roper
2026-03-05 12:02 ` [PATCH 3/7] drm/xe/nvlp: Read platform-level stepping info Gustavo Sousa
2026-03-05 22:13   ` Matt Roper
2026-03-05 12:02 ` [PATCH 4/7] drm/xe/rtp: Add support for matching platform-level stepping Gustavo Sousa
2026-03-05 22:22   ` Matt Roper
2026-03-06  0:53     ` Matt Roper
2026-03-06 13:39       ` Gustavo Sousa [this message]
2026-03-06 16:40         ` Matt Roper
2026-03-05 12:02 ` [PATCH 5/7] drm/xe/nvlp: Implement Wa_14026539277 Gustavo Sousa
2026-03-05 15:23   ` Gustavo Sousa
2026-03-05 22:05     ` Matt Roper
2026-03-05 12:02 ` [PATCH 6/7] drm/xe/xe3p: Drop Wa_16028780921 Gustavo Sousa
2026-03-05 22:23   ` Matt Roper
2026-03-05 12:02 ` [PATCH 7/7] drm/xe: Translate C-state "reset value" into RC6 Gustavo Sousa
2026-03-05 22:25   ` Matt Roper
2026-03-06 11:37 ` ✓ CI.KUnit: success for Extra enabling patches for NVL-P Patchwork
2026-03-06 12:16 ` ✓ Xe.CI.BAT: " Patchwork

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=871phxxeje.fsf@intel.com \
    --to=gustavo.sousa@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=matthew.d.roper@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.