[Intel-gfx] [PATCH 00/13 v4] Batch submission via GuC

Dave Gordon david.s.gordon at intel.com
Thu Jul 9 11:29:01 PDT 2015


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 two subsequences within the patch series:

  drm/i915: Add i915_gem_object_create_from_data()
  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 five patches make up the GuC loader and its prerequisites.  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
  drm/i915: Enable GuC submission, where supported

In this second 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
GuC submission is explicitly disabled, batch submission will revert to
using the execlist mechanism directly.

On the other hand, if the GuC firmware cannot be found or is invalid,
the GPU will be unusable.

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.

Ben Widawsky (0):
Vinit Azad (0):
Michael H. Nguyen (0):
  created the original versions on which some of these patches are based.

Alex Dai (6):
  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

Dave Gordon (7):
  drm/i915: Add i915_gem_object_create_from_data()
  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

 Documentation/DocBook/drm.tmpl             |  14 +
 drivers/gpu/drm/i915/Makefile              |   4 +
 drivers/gpu/drm/i915/i915_debugfs.c        | 110 +++-
 drivers/gpu/drm/i915/i915_dma.c            |   4 +
 drivers/gpu/drm/i915/i915_drv.h            |  15 +
 drivers/gpu/drm/i915/i915_gem.c            |  53 ++
 drivers/gpu/drm/i915/i915_guc_reg.h        | 102 ++++
 drivers/gpu/drm/i915/i915_guc_submission.c | 853 +++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/i915_params.c         |   9 +
 drivers/gpu/drm/i915/i915_reg.h            |  15 +-
 drivers/gpu/drm/i915/intel_guc.h           | 118 ++++
 drivers/gpu/drm/i915/intel_guc_fwif.h      | 245 +++++++++
 drivers/gpu/drm/i915/intel_guc_loader.c    | 618 +++++++++++++++++++++
 drivers/gpu/drm/i915/intel_lrc.c           |  72 ++-
 drivers/gpu/drm/i915/intel_lrc.h           |   9 +
 15 files changed, 2211 insertions(+), 30 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

-- 
1.9.1



More information about the Intel-gfx mailing list