All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: "Cavitt, Jonathan" <jonathan.cavitt@intel.com>
Cc: "intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>,
	"Nerlige Ramappa, Umesh" <umesh.nerlige.ramappa@intel.com>,
	"Souza, Jose" <jose.souza@intel.com>,
	"Landwerlin, Lionel G" <lionel.g.landwerlin@intel.com>
Subject: Re: [PATCH 7/8] drm/xe/oa: Add syncs support to OA config ioctl
Date: Mon, 19 Aug 2024 18:40:54 -0700	[thread overview]
Message-ID: <85v7zw6kex.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <CH0PR11MB544473F8360B2C1F033674B6E5B92@CH0PR11MB5444.namprd11.prod.outlook.com>

On Thu, 08 Aug 2024 14:39:12 -0700, Cavitt, Jonathan wrote:
>
> -----Original Message-----
> From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Ashutosh Dixit
> Sent: Thursday, August 8, 2024 10:42 AM
> To: intel-xe@lists.freedesktop.org
> Cc: Nerlige Ramappa, Umesh <umesh.nerlige.ramappa@intel.com>; Souza, Jose <jose.souza@intel.com>; Landwerlin, Lionel G <lionel.g.landwerlin@intel.com>
> Subject: [PATCH 7/8] drm/xe/oa: Add syncs support to OA config ioctl
> >
> > In addition to stream open, add xe_sync support to the OA config ioctl,
> > where it is even more useful. This allows e.g. Mesa to replay a workload
> > repeatedly on the GPU, each time with a different OA configuration, while
> > precisely controlling (at batch buffer granularity) the workload segment
> > for which a particular OA configuration is active, without introducing
> > stalls in the userspace pipeline.
> >
> > Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> > ---
> >  drivers/gpu/drm/xe/xe_oa.c       | 32 ++++++++++++++++++--------------
> >  drivers/gpu/drm/xe/xe_oa_types.h |  3 +++
> >  2 files changed, 21 insertions(+), 14 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
> > index 5520208a46b2c..c9f77f0342b60 100644
> > --- a/drivers/gpu/drm/xe/xe_oa.c
> > +++ b/drivers/gpu/drm/xe/xe_oa.c
> > @@ -867,6 +867,7 @@ static void xe_oa_stream_destroy(struct xe_oa_stream *stream)
> >		xe_gt_WARN_ON(gt, xe_guc_pc_unset_gucrc_mode(&gt->uc.guc.pc));
> >
> >	xe_oa_free_configs(stream);
> > +	xe_file_put(stream->xef);
> >  }
> >
> >  static int xe_oa_alloc_oa_buffer(struct xe_oa_stream *stream)
> > @@ -1433,36 +1434,37 @@ static int xe_oa_disable_locked(struct xe_oa_stream *stream)
> >
> >  static long xe_oa_config_locked(struct xe_oa_stream *stream, u64 arg)
> >  {
> > -	struct drm_xe_ext_set_property ext;
> > +	struct xe_oa_open_param param = {};
> >	long ret = stream->oa_config->id;
> >	struct xe_oa_config *config;
> >	int err;
> >
> > -	err = __copy_from_user(&ext, u64_to_user_ptr(arg), sizeof(ext));
> > -	if (XE_IOCTL_DBG(stream->oa->xe, err))
> > -		return -EFAULT;
> > -
> > -	if (XE_IOCTL_DBG(stream->oa->xe, ext.pad) ||
> > -	    XE_IOCTL_DBG(stream->oa->xe, ext.base.name != DRM_XE_OA_EXTENSION_SET_PROPERTY) ||
> > -	    XE_IOCTL_DBG(stream->oa->xe, ext.base.next_extension) ||
> > -	    XE_IOCTL_DBG(stream->oa->xe, ext.property != DRM_XE_OA_PROPERTY_OA_METRIC_SET))
> > -		return -EINVAL;
>
> I take it these conditions originally blocked batch buffer granular OA configuration
> changes, which we now support due to xe_oa_parse_syncs down below?

Yeah, previously only metric_set configuration was supported for stream
reconfiguration. Now that we have introduced syncs in this series,
both metric_set and xe_syncs are supported in the reconfig path.

>
> At any rate, this all looks fine to me.
> Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>

Thanks.
--
Ashutosh

> -Jonathan Cavitt
>
> > +	err = xe_oa_user_extensions(stream->oa, arg, 0, &param);
> > +	if (err)
> > +		return err;
> >
> > -	config = xe_oa_get_oa_config(stream->oa, ext.value);
> > +	config = xe_oa_get_oa_config(stream->oa, param.metric_set);
> >	if (!config)
> >		return -ENODEV;
> >
> >	if (config != stream->oa_config) {
> > +		param.xef = stream->xef;
> > +		err = xe_oa_parse_syncs(stream->oa, &param);
> > +		if (err)
> > +			goto err_config_put;
> > +
> > +		stream->num_syncs = param.num_syncs;
> > +		stream->syncs = param.syncs;
> > +
> >		err = xe_oa_emit_oa_config(stream, config);
> >		if (!err)
> >			config = xchg(&stream->oa_config, config);
> > -		else
> > -			ret = err;
> >	}
> >
> > +err_config_put:
> >	xe_oa_config_put(config);
> >
> > -	return ret;
> > +	return err ?: ret;
> >  }
> >
> >  static long xe_oa_status_locked(struct xe_oa_stream *stream, unsigned long arg)
> > @@ -1705,6 +1707,7 @@ static int xe_oa_stream_init(struct xe_oa_stream *stream,
> >	stream->period_exponent = param->period_exponent;
> >	stream->no_preempt = param->no_preempt;
> >
> > +	stream->xef = xe_file_get(param->xef);
> >	stream->num_syncs = param->num_syncs;
> >	stream->syncs = param->syncs;
> >
> > @@ -1804,6 +1807,7 @@ static int xe_oa_stream_init(struct xe_oa_stream *stream,
> >  err_free_configs:
> >	xe_oa_free_configs(stream);
> >  exit:
> > +	xe_file_put(stream->xef);
> >	return ret;
> >  }
> >
> > diff --git a/drivers/gpu/drm/xe/xe_oa_types.h b/drivers/gpu/drm/xe/xe_oa_types.h
> > index c1ca960af9305..303e2e8f2a918 100644
> > --- a/drivers/gpu/drm/xe/xe_oa_types.h
> > +++ b/drivers/gpu/drm/xe/xe_oa_types.h
> > @@ -239,6 +239,9 @@ struct xe_oa_stream {
> >	/** @no_preempt: Whether preemption and timeslicing is disabled for stream exec_q */
> >	u32 no_preempt;
> >
> > +	/** @xef: xe_file with which the stream was opened */
> > +	struct xe_file *xef;
> > +
> >	/** @num_syncs: size of @syncs array */
> >	u32 num_syncs;
> >
> > --
> > 2.41.0
> >
> >

  reply	other threads:[~2024-08-20  1:40 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-08 17:41 [PATCH 0/8] drm/xe/oa: xe_syncs for OA Ashutosh Dixit
2024-08-08 17:41 ` [PATCH 1/8] drm/xe/oa: Separate batch submission from waiting for completion Ashutosh Dixit
2024-08-08 20:18   ` Cavitt, Jonathan
2024-08-20  1:01     ` Dixit, Ashutosh
2024-08-08 23:04   ` Matthew Brost
2024-08-20  1:00     ` Dixit, Ashutosh
2024-08-08 17:41 ` [PATCH 2/8] drm/xe/oa: Introduce 'struct xe_oa_fence' Ashutosh Dixit
2024-08-08 20:58   ` Cavitt, Jonathan
2024-08-20  1:03     ` Dixit, Ashutosh
2024-08-08 23:29   ` Matthew Brost
2024-08-08 17:41 ` [PATCH 3/8] drm/xe/oa/uapi: Define and parse OA sync properties Ashutosh Dixit
2024-08-08 21:05   ` Cavitt, Jonathan
2024-08-08 23:13   ` Matthew Brost
2024-08-20  1:04     ` Dixit, Ashutosh
2024-08-08 17:41 ` [PATCH 4/8] drm/xe/oa: Add input fence dependencies Ashutosh Dixit
2024-08-08 21:09   ` Cavitt, Jonathan
2024-08-20  1:05     ` Dixit, Ashutosh
2024-08-08 23:25   ` Matthew Brost
2024-08-20  1:06     ` Dixit, Ashutosh
2024-08-08 17:41 ` [PATCH 5/8] drm/xe/oa: Signal output fences Ashutosh Dixit
2024-08-08 21:16   ` Cavitt, Jonathan
2024-08-20  1:30     ` Dixit, Ashutosh
2024-08-08 23:19   ` Matthew Brost
2024-08-09  4:15     ` Dixit, Ashutosh
2024-08-09  4:50       ` Matthew Brost
2024-08-13 21:35         ` Dixit, Ashutosh
2024-08-20  1:30         ` Dixit, Ashutosh
2024-08-08 17:41 ` [PATCH 6/8] drm/xe/oa: Move functions up so they can be reused for config ioctl Ashutosh Dixit
2024-08-08 21:18   ` Cavitt, Jonathan
2024-08-08 17:41 ` [PATCH 7/8] drm/xe/oa: Add syncs support to OA " Ashutosh Dixit
2024-08-08 21:39   ` Cavitt, Jonathan
2024-08-20  1:40     ` Dixit, Ashutosh [this message]
2024-08-08 17:41 ` [PATCH 8/8] drm/xe/oa: Allow only certain property changes from " Ashutosh Dixit
2024-08-08 22:15   ` Cavitt, Jonathan
2024-08-20  1:45     ` Dixit, Ashutosh
2024-08-08 19:04 ` ✓ CI.Patch_applied: success for drm/xe/oa: xe_syncs for OA Patchwork
2024-08-08 19:04 ` ✓ CI.checkpatch: " Patchwork
2024-08-08 19:05 ` ✓ CI.KUnit: " Patchwork
2024-08-08 19:17 ` ✓ CI.Build: " Patchwork
2024-08-08 19:19 ` ✓ CI.Hooks: " Patchwork
2024-08-08 19:21 ` ✓ CI.checksparse: " Patchwork
2024-08-08 19:51 ` ✓ CI.BAT: " Patchwork
2024-08-08 22:26 ` ✗ CI.FULL: failure " 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=85v7zw6kex.wl-ashutosh.dixit@intel.com \
    --to=ashutosh.dixit@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=jonathan.cavitt@intel.com \
    --cc=jose.souza@intel.com \
    --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 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.