All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Dave Gordon <david.s.gordon@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 00/15 v3] Batch submission via GuC
Date: Mon, 6 Jul 2015 16:29:47 +0200	[thread overview]
Message-ID: <20150706142947.GK2156@phenom.ffwll.local> (raw)
In-Reply-To: <1435926637-30892-1-git-send-email-david.s.gordon@intel.com>

On Fri, Jul 03, 2015 at 01:30:22PM +0100, Dave Gordon wrote:
> This patch series enables command submission via the GuC. In this mode,
> instead of the host CPU driving the execlist port directly, it hands
> over work items to the GuC, using a doorbell mechanism to tell the GuC
> that new items have been added to its work queue. The GuC then dispatches
> contexts to the various GPU engines, and manages the resulting context-
> switch interrupts. Completion of a batch is however still signalled to
> the CPU; the GuC is not involved in handling user interrupts.
> 
> There are three subsequences within the patch series:
> 
>   drm/i915: Add i915_gem_object_create_from_data()
>   drm/i915: Embedded microcontroller (uC) firmware loading support
> 
> These first two patches provide a common framework for fetching the
> firmware that may be required by any embedded microcontroller from a
> file, and saving some or all of it in a pageable (shmfs-backed) GEM
> object (or otherwise, if required by the uC-specific code).  It is
> hoped that this framework is sufficiently general that it can be used
> for all curent and future microcontrollers.
> 
>   drm/i915: Add GuC-related module parameters
>   drm/i915: Add GuC-related header files
>   drm/i915: GuC-specific firmware loader
>   drm/i915: Debugfs interface to read GuC load status
> 
> These four patches complete the GuC loader. At this point in the sequence
> we can load and activate the GuC firmware, but not submit any batches
> through it. (This is nonetheless a potentially useful state, as the GuC
> could do other useful work even when not handling batch submissions).
> 
>   drm/i915: Expose two LRC functions for GuC submission mode
>   drm/i915: GuC submission setup, phase 1
>   drm/i915: Enable GuC firmware log
>   drm/i915: Implementation of GuC client
>   drm/i915: Interrupt routing for GuC submission
>   drm/i915: Integrate GuC-based command submission
>   drm/i915: Debugfs interface for GuC submission statistics
>   Documentation/drm: kerneldoc for GuC
>   drm/i915: Enable GuC submission, where supported
> 
> In the final section, we implement the GuC submission mechanism, link
> it into the (execlist-based) submission path, and finally enable it
> (on supported platforms). On platforms where there is no GuC, or if
> the GuC firmware cannot be found or is invalid, batch submission will
> revert to using the execlist mechanism directly.
> 
> The GuC firmware itself is not included in this patchset; it is or will
> be available for download from https://01.org/linuxgraphics/downloads/
> This driver works with and requires GuC firmware revision 3.x. It will
> not work with any firmware version 1.x, as the GuC protocol in those
> revisions was incompatible and is no longer supported.
> 
> Prerequisites: GuC submission will expose existing inadequacies in
> some of the existing codepaths unless certain other patches are applied.
> In particular we require Michel Thierry's patch:
>   drm/i915/lrc: Update PDPx registers with LRI commands
> (because the GuC support light-restore, which execlist mode doesn't).
> Unfortunately the version of this recently committed to drm-intel-nightly
>     7a01a0a drm/i915/lrc: Update PDPx registers with lri commands
> was incomplete in a way that was mostly harmless, but incompatible with
> GuC usage, so the missing part has been folded into patch 7 below:
>   drm/i915: Expose two LRC functions for GuC submission mode
> The previous prerequisite patch
>   drm/i915: Allocate OLR more safely (workaround until OLR goes away)
> is no longer required as the OLR has now gone away :)
> 
> Alex Dai (7):
>   drm/i915: Add GuC-related module parameters
>   drm/i915: GuC-specific firmware loader
>   drm/i915: Debugfs interface to read GuC load status
>   drm/i915: GuC submission setup, phase 1
>   drm/i915: Enable GuC firmware log
>   drm/i915: Integrate GuC-based command submission
>   Documentation/drm: kerneldoc for GuC
> 
> Dave Gordon (8):
>   drm/i915: Add i915_gem_object_create_from_data()
>   drm/i915: Embedded microcontroller (uC) firmware loading support
>   drm/i915: Add GuC-related header files
>   drm/i915: Expose two LRC functions for GuC submission mode
>   drm/i915: Implementation of GuC client
>   drm/i915: Interrupt routing for GuC submission
>   drm/i915: Debugfs interface for GuC submission statistics
>   drm/i915: Enable GuC submission, where supported
> 
> Ben Widawsky (0):
> Vinit Azad (0):
> Michael H. Nguyen (0):
>   created the original versions on which some of these patches are based.

A few minor things still (I guess you expected my comment on the firmware
loader) but looks good overall with those addressed and the detailed
review done on top.
-Daniel

> 
>  Documentation/DocBook/drm.tmpl             |  19 +
>  drivers/gpu/drm/i915/Makefile              |   7 +
>  drivers/gpu/drm/i915/i915_debugfs.c        | 116 +++-
>  drivers/gpu/drm/i915/i915_dma.c            |   4 +
>  drivers/gpu/drm/i915/i915_drv.h            |  15 +
>  drivers/gpu/drm/i915/i915_gem.c            |  48 ++
>  drivers/gpu/drm/i915/i915_guc_reg.h        | 102 ++++
>  drivers/gpu/drm/i915/i915_guc_submission.c | 861 +++++++++++++++++++++++++++++
>  drivers/gpu/drm/i915/i915_params.c         |   9 +
>  drivers/gpu/drm/i915/i915_reg.h            |  15 +-
>  drivers/gpu/drm/i915/intel_guc.h           | 101 ++++
>  drivers/gpu/drm/i915/intel_guc_fwif.h      | 236 ++++++++
>  drivers/gpu/drm/i915/intel_guc_loader.c    | 530 ++++++++++++++++++
>  drivers/gpu/drm/i915/intel_lrc.c           |  85 +--
>  drivers/gpu/drm/i915/intel_lrc.h           |  11 +
>  drivers/gpu/drm/i915/intel_uc_loader.c     | 310 +++++++++++
>  drivers/gpu/drm/i915/intel_uc_loader.h     |  92 +++
>  17 files changed, 2520 insertions(+), 41 deletions(-)
>  create mode 100644 drivers/gpu/drm/i915/i915_guc_reg.h
>  create mode 100644 drivers/gpu/drm/i915/i915_guc_submission.c
>  create mode 100644 drivers/gpu/drm/i915/intel_guc.h
>  create mode 100644 drivers/gpu/drm/i915/intel_guc_fwif.h
>  create mode 100644 drivers/gpu/drm/i915/intel_guc_loader.c
>  create mode 100644 drivers/gpu/drm/i915/intel_uc_loader.c
>  create mode 100644 drivers/gpu/drm/i915/intel_uc_loader.h
> 
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2015-07-06 14:27 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-03 12:30 [PATCH 00/15 v3] Batch submission via GuC Dave Gordon
2015-07-03 12:30 ` [PATCH 01/15] drm/i915: Add i915_gem_object_create_from_data() Dave Gordon
2015-07-03 12:30 ` [PATCH 02/15] drm/i915: Embedded microcontroller (uC) firmware loading support Dave Gordon
2015-07-06 14:06   ` Daniel Vetter
2015-07-06 18:24     ` Dave Gordon
2015-07-06 19:17       ` Daniel Vetter
2015-07-03 12:30 ` [PATCH 03/15] drm/i915: Add GuC-related module parameters Dave Gordon
2015-07-06 14:08   ` Daniel Vetter
2015-07-03 12:30 ` [PATCH 04/15] drm/i915: Add GuC-related header files Dave Gordon
2015-07-03 12:30 ` [PATCH 05/15] drm/i915: GuC-specific firmware loader Dave Gordon
2015-07-06 14:28   ` Daniel Vetter
2015-07-06 16:37     ` Dave Gordon
2015-07-06 18:12       ` Daniel Vetter
2015-07-03 12:30 ` [PATCH 06/15] drm/i915: Debugfs interface to read GuC load status Dave Gordon
2015-07-03 12:30 ` [PATCH 07/15] drm/i915: Expose two LRC functions for GuC submission mode Dave Gordon
2015-07-03 12:30 ` [PATCH 08/15] drm/i915: GuC submission setup, phase 1 Dave Gordon
2015-07-03 12:30 ` [PATCH 09/15] drm/i915: Enable GuC firmware log Dave Gordon
2015-07-03 12:30 ` [PATCH 10/15] drm/i915: Implementation of GuC client Dave Gordon
2015-07-06 14:10   ` Daniel Vetter
2015-07-03 12:30 ` [PATCH 11/15] drm/i915: Interrupt routing for GuC submission Dave Gordon
2015-07-06 14:14   ` Daniel Vetter
2015-07-06 16:07     ` Dave Gordon
2015-07-06 18:21       ` Daniel Vetter
2015-07-07  0:00         ` Yu Dai
2015-07-07  9:06           ` Daniel Vetter
2015-07-07 16:19             ` Yu Dai
2015-07-03 12:30 ` [PATCH 12/15] drm/i915: Integrate GuC-based command submission Dave Gordon
2015-07-03 12:30 ` [PATCH 13/15] drm/i915: Debugfs interface for GuC submission statistics Dave Gordon
2015-07-03 12:30 ` [PATCH 14/15] Documentation/drm: kerneldoc for GuC Dave Gordon
2015-07-06 14:16   ` Daniel Vetter
2015-07-03 12:30 ` [PATCH 15/15] drm/i915: Enable GuC submission, where supported Dave Gordon
2015-07-06 14:29 ` Daniel Vetter [this message]
2015-07-07 19:03   ` [PATCH 00/15 v3] Batch submission via GuC O'Rourke, Tom

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=20150706142947.GK2156@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=david.s.gordon@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /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.