From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [Intel-xe] [PATCH 20/21] drm/xe/uapi: Use OA unit id to identify OA unit
Date: Wed, 04 Oct 2023 20:09:21 -0700 [thread overview]
Message-ID: <87sf6p22am.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <87ttr522iw.wl-ashutosh.dixit@intel.com>
On Wed, 04 Oct 2023 20:04:23 -0700, Dixit, Ashutosh wrote:
>
> On Wed, 04 Oct 2023 15:37:51 -0700, Umesh Nerlige Ramappa wrote:
> >
>
> Hi Umesh,
>
> > On Tue, Sep 19, 2023 at 09:10:48AM -0700, Ashutosh Dixit wrote:
> > > Previous uapi uses an indirect way (the engine class/instance of an engine
> > > connected to an OA unit) to identify an OA unit. Replace this by directly
> > > using the OA unit ID to identify the OA unit.
> > >
> > > With this change DRM_XE_OA_PROP_OA_ENGINE_CLASS property is not needed any
> > > more and removed. DRM_XE_OA_PROP_OA_ENGINE_INSTANCE is still used with
> > > DRM_XE_OA_PROP_EXEC_QUEUE_ID.
>
> /snip/
>
> > > +static int xe_oa_assign_hwe(struct xe_oa *oa, struct xe_oa_open_properties *props)
> > > +{
> > > + struct xe_gt *gt;
> > > + int i, ret = 0;
> > > +
> > > + if (props->exec_q) {
> > > + /* When we have an exec_q, get hwe from the exec_q */
> > > + for_each_gt(gt, oa->xe, i) {
> > > + props->hwe = xe_gt_hw_engine(gt, props->exec_q->class,
> > > + props->instance, false);
> > > + if (props->hwe)
> > > + break;
> > > + }
> > > + if (props->hwe && (xe_oa_unit_id(props->hwe) != props->oa_unit_id)) {
> > > + drm_dbg(&oa->xe->drm, "OA unit ID mismatch for exec_q\n");
> > > + ret = -EINVAL;
> > > + }
> > > + } else {
> > > + struct xe_hw_engine *hwe;
> > > + enum xe_hw_engine_id id;
> > > +
> > > + /* Else just get the first hwe attached to the oa unit */
> > > + for_each_gt(gt, oa->xe, i) {
> > > + for_each_hw_engine(hwe, gt, id) {
> > > + if (xe_oa_unit_id(hwe) == props->oa_unit_id) {
> > > + props->hwe = hwe;
> > > + goto out;
> > > + }
> > > + }
> > > + }
> > > + }
> >
> > I think both the if and else blocks above will get you the same hwe object,
> > so you can just pick the else code to assign hwe.
>
> Not when there are multiple hwe's attached to a single OA unit (I am
> thinking media/compute), correct?
>
> > Are we allowing the user to pass either oa_unit_id OR exec_q/instance?
>
> No. oa_unit_id is the basic entity used to identify the OA unit. If
> userland is only using OAG they can skip exec_q. If exec_q is specified,
> the code above checks if exec_q/instance lands on the same OA unit as the
> oa_unit_id.
>
> So oa_unit_id is always provided (for both OAG/OAR) and optionally
> exec_q/instance can be provided (for OAR).
>
> i915 had basically <class, instance, exec_q> and this XE uapi has
> <oa_unit_id, exec_q, instance> so the semantics here is almost the same as
> i915.
>
> > I think based on the HW requirement we should enable OAR/OAG together, so
> > maybe enforce that the user passes both params. Thoughts?
>
> I don't think it will fly since in some cases user is only interested in
> OAG (global data for all contexts) so no point forcing them to also passing
> in exec_q/instance. The user may not even have a specific exec_q in such
> case to pass into the uapi.
There are some additional considerations for the future about this: I think
we should really not need exec_q_id in the OA uapi. We should be able to
enable OAR functionality on all exec_q/instance combos (both which are
present and which may be created while OA is enabled) which can be
scheduled on that OAR unit. This would enable an OA MI_RPC query to be
issued on any exec queue which exists while the OA stream is open. OAR
registers are part of the context image so this looks feasible to me.
The instance field is interesting since I believe compute has a limitation
that OAC can only be enabled on a single hwe at a time. So even if we don't
have an exec_q, instance can be used to identify which hwe instance we are
enabling OAC on. So the semantics of instance will change in this case: at
present instance is the context image instance on which OAR/OAC is enabled,
later it will reflect the HW limitation of the engine instance.
Though we may not be do this immediately because of other priorities. So
currently we do single exec_q but can deprecate that if we can ever get
"any exec_q" to work.
Something like that (not completely thought through yet). Let's not worry
about this now but just wanted to write out my thoughts about this in case
you had any feedback.
Thanks.
--
Ashutosh
next prev parent reply other threads:[~2023-10-05 3:09 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-19 16:10 [Intel-xe] [PATCH 00/21] Add OA functionality to Xe Ashutosh Dixit
2023-09-19 16:10 ` [Intel-xe] [PATCH 01/21] drm/xe/uapi: Introduce OA (observability architecture) uapi Ashutosh Dixit
2023-10-04 0:26 ` Umesh Nerlige Ramappa
2023-10-04 0:36 ` Dixit, Ashutosh
2023-11-04 1:23 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 02/21] drm/xe/oa: Add OA types Ashutosh Dixit
2023-10-13 17:05 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 03/21] drm/xe/oa: Add registers and GPU commands used by OA Ashutosh Dixit
2023-10-13 17:06 ` Umesh Nerlige Ramappa
2023-11-17 22:52 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 04/21] drm/xe/oa: Module init/exit and probe/remove Ashutosh Dixit
2023-10-13 17:50 ` Umesh Nerlige Ramappa
2023-10-20 7:08 ` [Intel-xe] [04/21] " Lionel Landwerlin
2023-10-27 20:28 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 05/21] drm/xe/oa: Add/remove config ioctl's Ashutosh Dixit
2023-10-13 17:59 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 06/21] drm/xe/oa: Start implementing OA stream open ioctl Ashutosh Dixit
2023-10-13 18:09 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 07/21] drm/xe/oa: OA stream initialization Ashutosh Dixit
2023-10-04 15:22 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 08/21] drm/xe/oa: Expose OA stream fd Ashutosh Dixit
2023-10-13 18:17 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 09/21] drm/xe/oa: Read file_operation Ashutosh Dixit
2023-10-14 0:56 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 10/21] drm/xe/oa: Implement queries Ashutosh Dixit
2023-10-14 0:58 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 11/21] drm/xe/oa: Override GuC RC with OA on PVC Ashutosh Dixit
2023-10-16 17:43 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 12/21] drm/xe/uapi: "Perf" layer to support multiple perf counter stream types Ashutosh Dixit
2023-10-04 2:13 ` Umesh Nerlige Ramappa
2023-10-05 4:33 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 13/21] drm/xe/uapi: Multiplex PERF ops through a single PERF ioctl Ashutosh Dixit
2023-10-04 2:23 ` Umesh Nerlige Ramappa
2023-10-05 5:27 ` Dixit, Ashutosh
2023-10-05 15:22 ` Dixit, Ashutosh
2023-10-05 18:27 ` Umesh Nerlige Ramappa
2023-10-05 23:18 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 14/21] drm/xe/uapi: Simplify OA configs in uapi Ashutosh Dixit
2023-10-04 2:26 ` Umesh Nerlige Ramappa
2023-10-04 15:44 ` Dixit, Ashutosh
2023-10-04 16:13 ` Rodrigo Vivi
2023-09-19 16:10 ` [Intel-xe] [PATCH 15/21] drm/xe/uapi: Remove OA format names from OA uapi Ashutosh Dixit
2023-10-04 2:33 ` Umesh Nerlige Ramappa
2023-10-05 6:13 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 16/21] drm/xe/oa: Make xe_oa_timestamp_frequency per gt Ashutosh Dixit
2023-09-21 20:45 ` Rodrigo Vivi
2023-09-21 21:58 ` Dixit, Ashutosh
2023-09-22 19:10 ` Rodrigo Vivi
2023-09-19 16:10 ` [Intel-xe] [PATCH 17/21] drm/xe/oa: Remove filtering reports on context id Ashutosh Dixit
2023-10-14 1:01 ` Umesh Nerlige Ramappa
2023-10-20 7:30 ` [Intel-xe] [17/21] " Lionel Landwerlin
2023-10-20 17:00 ` Umesh Nerlige Ramappa
2023-09-19 16:10 ` [Intel-xe] [PATCH 18/21] drm/xe/uapi: More OA uapi fixes/additions Ashutosh Dixit
2023-10-04 0:23 ` Dixit, Ashutosh
2023-10-05 22:33 ` Dixit, Ashutosh
2023-10-12 3:14 ` Umesh Nerlige Ramappa
2023-10-20 7:28 ` [Intel-xe] [18/21] " Lionel Landwerlin
2023-10-27 20:28 ` Dixit, Ashutosh
2023-10-30 10:06 ` Lionel Landwerlin
2023-10-31 2:08 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 19/21] drm/xe/uapi: Drop OA_IOCTL_VERSION Ashutosh Dixit
2023-09-19 17:02 ` Dixit, Ashutosh
2023-10-04 2:37 ` Umesh Nerlige Ramappa
2023-10-05 3:28 ` Dixit, Ashutosh
2023-10-05 19:35 ` Umesh Nerlige Ramappa
2023-10-20 7:36 ` [Intel-xe] [19/21] " Lionel Landwerlin
2023-10-23 23:02 ` Umesh Nerlige Ramappa
2023-10-24 4:08 ` Dixit, Ashutosh
2023-10-24 15:54 ` Dixit, Ashutosh
2023-09-19 16:10 ` [Intel-xe] [PATCH 20/21] drm/xe/uapi: Use OA unit id to identify OA unit Ashutosh Dixit
2023-10-04 22:37 ` Umesh Nerlige Ramappa
2023-10-05 3:04 ` Dixit, Ashutosh
2023-10-05 3:09 ` Dixit, Ashutosh [this message]
2023-09-19 16:10 ` [Intel-xe] [PATCH 21/21] drm/xe/uapi: Convert OA property key/value pairs to a struct Ashutosh Dixit
2023-09-21 23:53 ` Dixit, Ashutosh
2023-10-05 5:37 ` Dixit, Ashutosh
2023-10-05 19:26 ` Umesh Nerlige Ramappa
2023-09-19 16:19 ` [Intel-xe] ✓ CI.Patch_applied: success for Add OA functionality to Xe (rev6) Patchwork
2023-09-19 16:19 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
2023-09-19 16:21 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
2023-09-19 16:28 ` [Intel-xe] ✓ CI.Build: " Patchwork
2023-09-19 16:28 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork
2023-09-19 16:29 ` [Intel-xe] ✓ CI.checksparse: success " Patchwork
2023-09-19 17:04 ` [Intel-xe] ✗ CI.BAT: failure " Patchwork
2023-10-14 1:05 ` [Intel-xe] [PATCH 00/21] Add OA functionality to Xe Umesh Nerlige Ramappa
2023-10-20 7:44 ` Lionel Landwerlin
2023-10-20 7:52 ` Lionel Landwerlin
2023-10-31 6:51 ` Dixit, Ashutosh
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=87sf6p22am.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox