[Intel-gfx] [PATCH 00/15 v3] Batch submission via GuC

Daniel Vetter daniel at ffwll.ch
Mon Jul 6 07:29:47 PDT 2015


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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the Intel-gfx mailing list