Re: [PATCH 00/13 v4] Batch submission via GuC

O'Rourke, Tom
2015-07-18T00:49:19Z

On Thu, Jul 09, 2015 at 07:29:01PM +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 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.

[TOR:] I finished reviewing the first 5 patches for GuC
firmware loading. These patches look ready to go.
Should we wait until the GuC version 3 firmware is
available from 01.org before merging?

I am still working on the second section for GuC submission.

Thanks,
Tom
>
> 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