Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: intel-xe@lists.freedesktop.org,
	Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Subject: Re: [PATCH 07/16] drm/xe/oa: OA stream initialization (OAG)
Date: Tue, 13 Feb 2024 09:04:43 -0800	[thread overview]
Message-ID: <85sf1wuwgk.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <8bb5c0c9-e1e0-4687-a2ac-a5555cfbbdc8@intel.com>

On Fri, 09 Feb 2024 00:14:13 -0800, Lionel Landwerlin wrote:
>

Hi Lionel,

> On 09/02/2024 09:08, Dixit, Ashutosh wrote:
> > On Thu, 08 Feb 2024 22:23:30 -0800, Lionel Landwerlin wrote:
> > Hi Lionel,
> >
> >>> +static int xe_oa_emit_oa_config(struct xe_oa_stream *stream)
> >>> +{
> >>> +#define NOA_PROGRAM_ADDITIONAL_DELAY_US 500
> >>> +	struct xe_oa_config_bo *oa_bo;
> >>> +	int err, us = NOA_PROGRAM_ADDITIONAL_DELAY_US;
> >>> +
> >>> +	oa_bo = xe_oa_alloc_config_buffer(stream);
> >>> +	if (IS_ERR(oa_bo)) {
> >>> +		err = PTR_ERR(oa_bo);
> >>> +		goto exit;
> >>> +	}
> >>> +
> >>> +	err = xe_oa_submit_bb(stream, oa_bo->bb);
> >>> +
> >>> +	/* Additional empirical delay needed for NOA programming after registers are written */
> >>> +	usleep_range(us, 2 * us);
> >> Looks like the entire oa_config emission is synchronous.
> > Yes that is indeed the case in this patchset.
> >
> >> That's a difference from i915 where we could just pipeline all the config
> >> changes with perf queries in between.
> >>
> >> If there was a mechanism to return a syncobj in this ioctl, we could do the
> >> wait from userspace and/or pipeline more submissions.
> > That is the plan. To expose syncobj's in OA properties and make also make
> > the oa_config emission asynchronous. But have not been able to get to it
> > yet (IGT's are mostly getting ready, but now we may also need to add
> > support for GPUVis before we can merge these patches, if we can't get a
> > temporary waiver).
> >
> > So the direction right now is to get the current patchset merged before
> > adding more features (like the syncobj).
>
> Any idea when that will happen?

I am assuming you are asking about the merge so: adding GPUVis support
seems to be a bit of a chore, so it will take a few (like 4+) weeks I am
thinking.

However I am hearing someone might add support in Mesa for Xe OA. If we are
able to use Mesa as an upstream consumer of the OA uapi, it might go a bit
faster. So discussions are on about this.

> I suppose you'll have to define a new ioctl for this?

Let me explain the overall idea first. Similar to 'xe-exec' we need these
two fields:

        /** @num_syncs: Amount of struct drm_xe_sync in array. */
        __u32 num_syncs;

        /** @syncs: Pointer to struct drm_xe_sync array. */
        __u64 syncs;

With these we can implement "fence wait" and "fence signal", similar to
what happens with xe_exec (and which allows xe_exec to be pipelined). That
is stream (re)configuration can wait for a fence, and will signal a fence
after stream configuration is complete (including any additional delays
after writing the registers, if an additional delay is needed).

Now we need to do this in two places:

1. When the stream is opened. In this case 'num_syncs' and 'syncs' can be
   passed in via stream properties.

2. During stream reconfiguration, that is during CONFIG ioctl on the stream
   fd (called in Xe as DRM_XE_PERF_IOCTL_CONFIG). So this ioctl will need to
   accept a struct which has { 'id', 'num_syncs' and 'syncs' } as its members.

   That reminds me, I need to make this change for the CONFIG stream fd
   ioctl now, or at least introduce reserved fields to make this happen in
   the future without breaking the uapi.

Does all this make sense?

Thanks.
--
Ashutosh

> > (Also, separately I'm trying to figure out if a delay similar to the NOA
> > programming delay is really needed when we have PES registers, the case for
> > Xe2+. Looks like it might not be, but still needs to be confirmed).
> >
> > Thanks.
> > --
> > Ashutosh
>
>

  reply	other threads:[~2024-02-13 17:04 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-08  5:49 [PATCH 00/16] Add OA functionality to Xe Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 01/16] drm/xe/perf/uapi: "Perf" layer to support multiple perf counter stream types Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 02/16] drm/xe/perf/uapi: Add perf_stream_paranoid sysctl Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 03/16] drm/xe/oa/uapi: Add OA data formats Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 04/16] drm/xe/oa/uapi: Initialize OA units Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 05/16] drm/xe/oa/uapi: Add/remove OA config perf ops Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 06/16] drm/xe/oa/uapi: Define and parse OA stream properties Ashutosh Dixit
2024-02-08 21:40   ` Lionel Landwerlin
2024-02-08 22:26     ` Dixit, Ashutosh
2024-02-09  6:25       ` Lionel Landwerlin
2024-02-09  6:46         ` Dixit, Ashutosh
2024-02-12 18:57       ` Umesh Nerlige Ramappa
2024-02-12 19:08         ` Umesh Nerlige Ramappa
2024-02-13  7:04           ` Dixit, Ashutosh
2024-02-08  5:49 ` [PATCH 07/16] drm/xe/oa: OA stream initialization (OAG) Ashutosh Dixit
2024-02-09  6:23   ` Lionel Landwerlin
2024-02-09  7:08     ` Dixit, Ashutosh
2024-02-09  8:14       ` Lionel Landwerlin
2024-02-13 17:04         ` Dixit, Ashutosh [this message]
2024-02-08  5:49 ` [PATCH 08/16] drm/xe/oa/uapi: Expose OA stream fd Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 09/16] drm/xe/oa/uapi: Read file_operation Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 10/16] drm/xe/oa: Disable overrun mode for Xe2+ OAG Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 11/16] drm/xe/oa: Add OAR support Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 12/16] drm/xe/oa: Add OAC support Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 13/16] drm/xe/oa/uapi: Query OA unit properties Ashutosh Dixit
2024-02-12 19:59   ` Umesh Nerlige Ramappa
2024-02-13  7:09     ` Dixit, Ashutosh
2024-02-08  5:49 ` [PATCH 14/16] drm/xe/oa/uapi: OA buffer mmap Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 15/16] drm/xe/oa: Add MMIO trigger support Ashutosh Dixit
2024-02-08  5:49 ` [PATCH 16/16] drm/xe/oa: Override GuC RC with OA on PVC Ashutosh Dixit
2024-02-08  5:52 ` ✓ CI.Patch_applied: success for Add OA functionality to Xe (rev9) Patchwork
2024-02-08  5:53 ` ✗ CI.checkpatch: warning " Patchwork
2024-02-08  5:54 ` ✓ CI.KUnit: success " Patchwork
2024-02-08  6:01 ` ✓ CI.Build: " Patchwork
2024-02-08  6:02 ` ✗ CI.Hooks: failure " Patchwork
2024-02-08  6:03 ` ✓ CI.checksparse: success " Patchwork
2024-02-08  6:22 ` ✓ CI.BAT: " Patchwork
2024-02-08 21:34 ` [PATCH 00/16] Add OA functionality to Xe Lionel Landwerlin
2024-02-08 21:56   ` Dixit, Ashutosh
  -- strict thread matches above, loose matches on Subject: below --
2024-03-05  5:32 Ashutosh Dixit
2024-03-05  5:32 ` [PATCH 07/16] drm/xe/oa: OA stream initialization (OAG) Ashutosh Dixit
2024-02-13  6:44 [PATCH 00/16] Add OA functionality to Xe Ashutosh Dixit
2024-02-13  6:44 ` [PATCH 07/16] drm/xe/oa: OA stream initialization (OAG) Ashutosh Dixit
2024-01-20  2:00 [PATCH 00/16] Add OA functionality to Xe Ashutosh Dixit
2024-01-20  2:00 ` [PATCH 07/16] drm/xe/oa: OA stream initialization (OAG) 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=85sf1wuwgk.wl-ashutosh.dixit@intel.com \
    --to=ashutosh.dixit@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=lionel.g.landwerlin@intel.com \
    --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