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@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx