[PATCH 07/16] drm/xe/oa: OA stream initialization (OAG)

Dixit, Ashutosh ashutosh.dixit at intel.com
Fri Feb 9 07:08:14 UTC 2024


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).

(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


More information about the Intel-xe mailing list