All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Summers, Stuart" <stuart.summers@intel.com>
To: "Brost, Matthew" <matthew.brost@intel.com>
Cc: "intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>,
	"Dong,  Zhanjun" <zhanjun.dong@intel.com>,
	"Lin, Shuicheng" <shuicheng.lin@intel.com>,
	"Vishwanathapura,
	Niranjana" <niranjana.vishwanathapura@intel.com>
Subject: Re: [PATCH 7/7] drm/xe/doc: Add GuC submission kernel-doc
Date: Mon, 20 Oct 2025 22:07:53 +0000	[thread overview]
Message-ID: <18ad859ba4534dc71a46c19afd9f0ddebfd548de.camel@intel.com> (raw)
In-Reply-To: <aPayGrFBqHV/J5zP@lstrano-desk.jf.intel.com>

On Mon, 2025-10-20 at 15:05 -0700, Matthew Brost wrote:
> On Mon, Oct 20, 2025 at 09:45:29PM +0000, Stuart Summers wrote:
> > Add some documentation for the different roles played by the XeKMD
> > in communication with the GuC through exec queue management and
> > the DRM scheduler.
> > 
> 
> I've written fairly detailed GuC submission documentation but it
> stuck
> in review purgatory. Here is the most recent post [1].

Oh excellent I hadn't realized this was part of that series. Happy to
drop mine... I'll also take a look at your patch.

Thanks,
Stuart

> 
> Matt
> 
> [1]
> https://patchwork.freedesktop.org/patch/677980/?series=154627&rev=4 
> 
> > Signed-off-by: Stuart Summers <stuart.summers@intel.com>
> > ---
> >  Documentation/gpu/xe/index.rst         |  1 +
> >  Documentation/gpu/xe/xe_guc_submit.rst |  8 +++
> >  drivers/gpu/drm/xe/xe_guc_submit.c     | 70
> > ++++++++++++++++++++++++++
> >  3 files changed, 79 insertions(+)
> >  create mode 100644 Documentation/gpu/xe/xe_guc_submit.rst
> > 
> > diff --git a/Documentation/gpu/xe/index.rst
> > b/Documentation/gpu/xe/index.rst
> > index bc432c95d1a3..030268ddba87 100644
> > --- a/Documentation/gpu/xe/index.rst
> > +++ b/Documentation/gpu/xe/index.rst
> > @@ -15,6 +15,7 @@ DG2, etc is provided to prototype the driver.
> >     xe_map
> >     xe_migrate
> >     xe_exec_queue
> > +   xe_guc_submit
> >     xe_cs
> >     xe_pm
> >     xe_gt_freq
> > diff --git a/Documentation/gpu/xe/xe_guc_submit.rst
> > b/Documentation/gpu/xe/xe_guc_submit.rst
> > new file mode 100644
> > index 000000000000..a82b5d57ee6a
> > --- /dev/null
> > +++ b/Documentation/gpu/xe/xe_guc_submit.rst
> > @@ -0,0 +1,8 @@
> > +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +
> > +==============
> > +GuC Submission
> > +==============
> > +
> > +.. kernel-doc:: drivers/gpu/drm/xe/xe_guc_submit.c
> > +   :doc: GuC Submission
> > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c
> > b/drivers/gpu/drm/xe/xe_guc_submit.c
> > index a11ae4e70809..fd05f73cd96b 100644
> > --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> > @@ -46,6 +46,76 @@
> >  #include "xe_trace.h"
> >  #include "xe_vm.h"
> >  
> > +/**
> > + * DOC: GuC Submission
> > + *
> > + * The primary submission vehicle for the XeKMD is the GuC
> > firmware.
> > + * This includes creating, registering, and submitting exec queues
> > + * (see :ref:`execution-queue`). Once submitted, actual hardware
> > scheduling
> > + * is handled fully by the GuC.
> > + *
> > + * To facilitate these operations, XeKMD makes use of the DRM
> > scheduler
> > + * to handle state changes and determine when jobs should be
> > scheduled
> > + * with the GuC.
> > + *
> > + * Queue Registration
> > + * ==================
> > + *
> > + * Registration and deregistration of exec queues with the GuC
> > involves
> > + * creation of the ring (LRC) for that context. These are
> > asynchronous
> > + * actions by the XeKMD which completes that
> > registration/deregistration
> > + * process once the GuC responds that the hardware registration
> > has
> > + * completed.
> > + *
> > + * Queue Submission
> > + * ================
> > + *
> > + * The GuC has a parameter for each context indicating whether
> > that
> > + * context can be scheduled with the associated engine. After
> > registration
> > + * has completed, the KMD, typically as a reaction to a request
> > from
> > + * the user exec IOCTL call, will issue a schedule request with
> > the
> > + * GuC. The GuC will then add that to its schedule for contexts
> > + * and will in turn schedule this with the command streamer based
> > + * on time slice availability.
> > + *
> > + * Queue Destruction
> > + * =================
> > + *
> > + * As mentioned above, before destroying a queue, it must first be
> > + * deregistered. In the typical case, this happens first by
> > sending
> > + * a schedule disable request, then on confirmation from the GuC,
> > + * a deregistration request. Only after that deregistration
> > response
> > + * will the XeKMD free resources associated with that queue such
> > as
> > + * the LRC.
> > + *
> > + * Engine Resets
> > + * =============
> > + *
> > + * Any time more than one context is being scheduled by the GuC,
> > the GuC
> > + * will give each context a certain configurable time slice. If a
> > context
> > + * exceeds this time slice, the GuC will reset the engine and
> > notify the XeKMD
> > + * along with an engine state at the time of the reset. The XeKMD
> > will then
> > + * resubmit any outstanding jobs to that engine. If a particular
> > job has been
> > + * resubmitted in this way more than once, the associated exec
> > queue will be
> > + * marked banned and will no longer be schedulable on that engine.
> > + *
> > + * Queue Wedging
> > + * =============
> > + *
> > + * On device wedging (see :ref:`device-wedging`), each exec queue
> > is also marked
> > + * as wedged. This includes taking a reference to that device and
> > adding a
> > + * dereference on driver teardown. This additional reference
> > allows a user
> > + * to collect certain debug information about the exec queue prior
> > to driver
> > + * unbind.
> > + *
> > + * There are some instances where the device wedge might not take
> > a reference
> > + * in this way, for instance, if the context is in the process of
> > being
> > + * deregistered with the GuC at the time of the wedge. In this
> > case, a
> > + * reference to that exec queue should already be available and
> > any
> > + * associated data structures will be cleaned up later in the
> > teardown
> > + * sequence.
> > + */
> > +
> >  static struct xe_guc *
> >  exec_queue_to_guc(struct xe_exec_queue *q)
> >  {
> > -- 
> > 2.34.1
> > 


      reply	other threads:[~2025-10-20 22:07 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-20 21:45 [PATCH 0/7] Fix a couple of wedge corner-case memory leaks Stuart Summers
2025-10-20 21:45 ` [PATCH 1/7] drm/xe: Add additional trace points for LRCs Stuart Summers
2025-10-20 21:45 ` [PATCH 2/7] drm/xe: Add a trace point for VM close Stuart Summers
2025-10-20 21:45 ` [PATCH 3/7] drm/xe: Add the BO pointer info to the BO trace Stuart Summers
2025-10-20 21:45 ` [PATCH 4/7] drm/xe: Add new exec queue trace points Stuart Summers
2025-10-20 21:45 ` [PATCH 5/7] drm/xe: Correct migration VM teardown order Stuart Summers
2025-10-22 20:30   ` Matthew Brost
2025-10-23 17:18     ` Summers, Stuart
2025-10-20 21:45 ` [PATCH 6/7] drm/xe: Clean up GuC software state after a wedge Stuart Summers
2025-10-22 21:15   ` Matthew Brost
2025-10-23 17:43     ` Summers, Stuart
2025-10-23 18:26       ` Matthew Brost
2025-10-20 21:45 ` [PATCH 7/7] drm/xe/doc: Add GuC submission kernel-doc Stuart Summers
2025-10-20 22:05   ` Matthew Brost
2025-10-20 22:07     ` Summers, Stuart [this message]

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=18ad859ba4534dc71a46c19afd9f0ddebfd548de.camel@intel.com \
    --to=stuart.summers@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=matthew.brost@intel.com \
    --cc=niranjana.vishwanathapura@intel.com \
    --cc=shuicheng.lin@intel.com \
    --cc=zhanjun.dong@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.