All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Cc: <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH 1/5] drm/xe/oa/uapi: Expose media OA units
Date: Fri, 06 Jun 2025 09:42:40 -0700	[thread overview]
Message-ID: <87v7p8u8hr.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <87zfemt53o.wl-ashutosh.dixit@intel.com>

On Thu, 05 Jun 2025 11:28:59 -0700, Dixit, Ashutosh wrote:
>
> On Wed, 04 Jun 2025 16:42:04 -0700, Umesh Nerlige Ramappa wrote:
> >

Hi Umesh,

> > On Tue, Jun 03, 2025 at 01:21:29PM -0700, Ashutosh Dixit wrote:
> > > On Xe2+ platforms, media engines are attached to "SCMI" OA media (OAM)
> > > units. One or more SCMI OAM units might be present on a platform. In
> > > addition there is another OAM unit for global events, called
> > > OAM-SAG. Performance metrics for media workloads can be obtained from these
> > > OAM units, similar to OAG.
> > >
> > > Expose these OAM units for userspace to use. OAM-SAG is exposed as an OA
> > > unit without any attached engines.
> > >
> > > Bspec: 70819, 67103, 63844, 72572, 74476, 61284
> > >
> > > v2: Fix xe_gt_WARN_ON in __hwe_oam_unit for < 12.7 platforms
> > > v3: Return XE_OA_UNIT_INVALID for < 12.7 to indicate no OAM units
> > > v4: Move xe_oa_print_oa_units() to separate patch
> > > v5: Introduce DRM_XE_OA_UNIT_TYPE_OAM_SAG
> > >
> > > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> > > ---
> > > drivers/gpu/drm/xe/xe_oa.c | 68 ++++++++++++++++++++++++++++----------
> > > include/uapi/drm/xe_drm.h  |  3 ++
> > > 2 files changed, 54 insertions(+), 17 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
> > > index fb842fa0552e5..0de0d5a18df74 100644
> > > --- a/drivers/gpu/drm/xe/xe_oa.c
> > > +++ b/drivers/gpu/drm/xe/xe_oa.c
> > > @@ -43,6 +43,12 @@
> > > #define DEFAULT_POLL_PERIOD_NS (NSEC_PER_SEC / DEFAULT_POLL_FREQUENCY_HZ)
> > > #define XE_OA_UNIT_INVALID U32_MAX
> > >
> > > +enum xe_oam_unit_type {
> > > +	XE_OAM_UNIT_SAG,
> > > +	XE_OAM_UNIT_SCMI_0,
> > > +	XE_OAM_UNIT_SCMI_1,
> > > +};
> > > +
> > > enum xe_oa_submit_deps {
> > >	XE_OA_SUBMIT_NO_DEPS,
> > >	XE_OA_SUBMIT_ADD_DEPS,
> > > @@ -1881,6 +1887,7 @@ static bool engine_supports_oa_format(const struct xe_hw_engine *hwe, int type)
> > >		return type == DRM_XE_OA_FMT_TYPE_OAG || type == DRM_XE_OA_FMT_TYPE_OAR ||
> > >			type == DRM_XE_OA_FMT_TYPE_OAC || type == DRM_XE_OA_FMT_TYPE_PEC;
> > >	case DRM_XE_OA_UNIT_TYPE_OAM:
> > > +	case DRM_XE_OA_UNIT_TYPE_OAM_SAG:
> > >		return type == DRM_XE_OA_FMT_TYPE_OAM || type == DRM_XE_OA_FMT_TYPE_OAM_MPEC;
> > >	default:
> > >		return false;
> > > @@ -2448,20 +2455,38 @@ int xe_oa_register(struct xe_device *xe)
> > >
> > > static u32 num_oa_units_per_gt(struct xe_gt *gt)
> > > {
> > > -	return 1;
> > > +	if (!xe_gt_is_media_type(gt) || GRAPHICS_VER(gt_to_xe(gt)) < 20)
> > > +		return 1;
> > > +	else if (!IS_DGFX(gt_to_xe(gt)))
> > > +		return XE_OAM_UNIT_SCMI_0 + 1; /* SAG + SCMI_0 */
> > > +	else
> > > +		return XE_OAM_UNIT_SCMI_1 + 1; /* SAG + SCMI_0 + SCMI_1 */
> > > }
> > >
> > > static u32 __hwe_oam_unit(struct xe_hw_engine *hwe)
> > > {
> > > -	if (GRAPHICS_VERx100(gt_to_xe(hwe->gt)) >= 1270) {
> > > -		/*
> > > -		 * There's 1 SAMEDIA gt and 1 OAM per SAMEDIA gt. All media slices
> > > -		 * within the gt use the same OAM. All MTL/LNL SKUs list 1 SA MEDIA
> > > -		 */
> > > -		xe_gt_WARN_ON(hwe->gt, hwe->gt->info.type != XE_GT_TYPE_MEDIA);
> > > +	if (GRAPHICS_VERx100(gt_to_xe(hwe->gt)) < 1270)
> > > +		return XE_OA_UNIT_INVALID;
> > >
> > > +	xe_gt_WARN_ON(hwe->gt, !xe_gt_is_media_type(hwe->gt));
> > > +
> > > +	if (GRAPHICS_VER(gt_to_xe(hwe->gt)) < 20)
> > >		return 0;
> > > -	}
> > > +	/*
> > > +	 * XE_OAM_UNIT_SAG has only GSCCS attached to it, but only on some platforms. Also
> > > +	 * GSCCS cannot be used to submit batches to program the OAM unit. Therefore we don't
> > > +	 * assign an OA unit to GSCCS. This means that XE_OAM_UNIT_SAG is exposed as an OA
> > > +	 * unit without attached engines. Fused off engines can also result in oa_unit's with
> > > +	 * num_engines == 0. OA streams can be opened on all OA units.
> > > +	 */
> > > +	else if (hwe->engine_id == XE_HW_ENGINE_GSCCS0)
> >
> > You could just drop the case XE_ENGINE_CLASS_OTHER in caller
> > (__hwe_oa_unit()) and then you dont need the XE_HW_ENGINE_GSCCS0 check
> > here.
>
> Yes, I was doing that initially. But then I changed to this to make it
> *explicit* that even when GSC is attached to OAM-SAG, it is not assigned to
> any OA unit. Because it is really an exception, as the comment above
> explains.
>
> If you are asking why XE_ENGINE_CLASS_OTHER calls __hwe_oam_unit(), that is
> because GSC is present on media GT and is used for HuC authentication
> etc. (also related to media).
>
> If you insist I can change it, but I think it is better to leave as
> is. This way it is part of the code, the other way it will be in a comment
> (and would be implicit and later people might wonder if it is missed). Let
> me know.
>
> >
> > > +		return XE_OA_UNIT_INVALID;
> > > +	else if (!IS_DGFX(gt_to_xe(hwe->gt)))
> > > +		return XE_OAM_UNIT_SCMI_0;
> > > +	else if (hwe->class == XE_ENGINE_CLASS_VIDEO_DECODE)
> > > +		return (hwe->instance / 2 & 0x1) + 1;
> >
> > should be same as (hwe->instance / 2) + 1;
>
> To map any possible VCS (VCS0 - VCS7) to OAM-SCMI-0 or OAM-SCMI-1 we need
> the '& 0x1'.
>
> >
> > > +	else if (hwe->class == XE_ENGINE_CLASS_VIDEO_ENHANCE)
> > > +		return (hwe->instance & 0x1) + 1;
> >
> > same here, should be same as (hwe->instance + 1)
>
> Similarly, to map any possible VECS (VECS0 - VECS3) to OAM-SCMI-0 or 1 we
> need the '& 0x1'.

So I ended up not making any changes to this patch. Anyway please take
another look and let me know what you think.

Thanks.
--
Ashutosh

  reply	other threads:[~2025-06-06 16:42 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-03 20:21 [PATCH v3 0/5] Enable media OA Ashutosh Dixit
2025-06-03 20:21 ` [PATCH 1/5] drm/xe/oa/uapi: Expose media OA units Ashutosh Dixit
2025-06-04 23:42   ` Umesh Nerlige Ramappa
2025-06-05 18:28     ` Dixit, Ashutosh
2025-06-06 16:42       ` Dixit, Ashutosh [this message]
2025-06-03 20:21 ` [PATCH 2/5] drm/xe/oa: Print hwe to OA unit mapping Ashutosh Dixit
2025-06-04 23:49   ` Umesh Nerlige Ramappa
2025-06-06 16:05     ` Dixit, Ashutosh
2025-06-03 20:21 ` [PATCH 3/5] drm/xe/oa: Introduce stream->oa_unit Ashutosh Dixit
2025-06-04 23:54   ` Umesh Nerlige Ramappa
2025-06-03 20:21 ` [PATCH 4/5] drm/xe/oa: Assign hwe for OAM_SAG Ashutosh Dixit
2025-06-05  0:14   ` Umesh Nerlige Ramappa
2025-06-06 16:07     ` Dixit, Ashutosh
2025-06-03 20:21 ` [PATCH 5/5] drm/xe/oa: Enable OAM latency measurement Ashutosh Dixit
2025-06-05 16:25   ` Umesh Nerlige Ramappa
2025-06-03 20:26 ` ✓ CI.Patch_applied: success for Enable media OA Patchwork
2025-06-03 20:26 ` ✓ CI.checkpatch: " Patchwork
2025-06-03 20:27 ` ✗ CI.KUnit: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2025-06-06 16:02 [PATCH v4 0/5] " Ashutosh Dixit
2025-06-06 16:02 ` [PATCH 1/5] drm/xe/oa/uapi: Expose media OA units Ashutosh Dixit
2025-06-06 17:37   ` Umesh Nerlige Ramappa
2025-06-06 19:21     ` Dixit, Ashutosh
2025-06-10 22:57       ` Dixit, Ashutosh
2025-06-16 22:26         ` Dixit, Ashutosh
2025-06-06 19:26 [PATCH 0/5] Enable media OA Ashutosh Dixit
2025-06-06 19:26 ` [PATCH 1/5] drm/xe/oa/uapi: Expose media OA units Ashutosh Dixit

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=87v7p8u8hr.wl-ashutosh.dixit@intel.com \
    --to=ashutosh.dixit@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=umesh.nerlige.ramappa@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.