From: Daniel Vetter <daniel@ffwll.ch>
To: Dave Gordon <david.s.gordon@intel.com>
Cc: Vinit Azad <vinit.azad@intel.com>,
intel-gfx@lists.freedesktop.org, Ben Widawsky <ben@bwidawsk.net>
Subject: Re: [PATCH 00/15] Batch submission via GuC
Date: Wed, 17 Jun 2015 14:43:38 +0200 [thread overview]
Message-ID: <20150617124338.GV23637@phenom.ffwll.local> (raw)
In-Reply-To: <1434393394-21002-1-git-send-email-david.s.gordon@intel.com>
On Mon, Jun 15, 2015 at 07:36:18PM +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_write() to i915_gem.c
> drm/i915: Embedded microcontroller (uC) firmware loading support
>
> These first two patches provide a generic framework for fetching the
> firmware that may be required by any embedded microcontroller from a
> file, using an asynchronous thread so that driver initialisation can
> continue while the firmware is being fetched. 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
Does that include all the nifty power management stuff GuC does?
> 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
> can do other useful work even when not handling batch submissions).
>
> drm/i915: Defer default hardware context initialisation until first
> drm/i915: Move execlists defines from .c to .h
> 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.
I thought we had some perf data showing that GuC is now faster than
execbuf ... Where's that?
> 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 will require some version of Michel Thierry's patch
> drm/i915/lrc: Update PDPx registers with lri commands
> (because the GuC support light-restore, which execlist mode doesn't),
> and my own
> drm/i915: Allocate OLR more safely (workaround until OLR goes away)
> because otherwise the changed timing means that there is an increased
s/timing/much reduced ring space I presume?
> risk of writing to a ringbuffer that is not currently pinned & mapped,
> causing a kernel OOPS.
Cheers, Daniel
>
> Alex Dai (10):
> drm/i915: Add i915_gem_object_write() to i915_gem.c
> 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
> drm/i915: GuC submission setup, phase 1
> drm/i915: Enable GuC firmware log
> drm/i915: Implementation of GuC client
> drm/i915: Integrate GuC-based command submission
> Documentation/drm: kerneldoc for GuC
>
> Dave Gordon (5):
> drm/i915: Embedded microcontroller (uC) firmware loading support
> drm/i915: Defer default hardware context initialisation until first
> drm/i915: Interrupt routing for GuC submission
> drm/i915: Debugfs interface for GuC submission statistics
> drm/i915: Enable GuC submission, where supported
>
> Michael H. Nguyen (1):
> drm/i915: Move execlists defines from .c to .h
>
> Ben Widawsky
> Vinit Azad
> created the original versions on which some of these patches are based.
>
> Documentation/DocBook/drm.tmpl | 19 +
> drivers/gpu/drm/i915/Makefile | 7 +
> drivers/gpu/drm/i915/i915_debugfs.c | 109 +++-
> drivers/gpu/drm/i915/i915_dma.c | 4 +
> drivers/gpu/drm/i915/i915_drv.h | 17 +
> drivers/gpu/drm/i915/i915_gem.c | 39 +-
> drivers/gpu/drm/i915/i915_gem_context.c | 52 +-
> drivers/gpu/drm/i915/i915_guc_submission.c | 873 ++++++++++++++++++++++++++++
> drivers/gpu/drm/i915/i915_irq.c | 48 ++
> drivers/gpu/drm/i915/i915_params.c | 9 +
> drivers/gpu/drm/i915/i915_reg.h | 92 ++-
> drivers/gpu/drm/i915/intel_guc.h | 184 ++++++
> drivers/gpu/drm/i915/intel_guc_api.h | 227 ++++++++
> drivers/gpu/drm/i915/intel_guc_loader.c | 498 ++++++++++++++++
> drivers/gpu/drm/i915/intel_lrc.c | 128 ++--
> drivers/gpu/drm/i915/intel_lrc.h | 8 +
> drivers/gpu/drm/i915/intel_uc_loader.c | 312 ++++++++++
> drivers/gpu/drm/i915/intel_uc_loader.h | 82 +++
> 18 files changed, 2607 insertions(+), 101 deletions(-)
> 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_api.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.7.9.5
>
> _______________________________________________
> 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
next prev parent reply other threads:[~2015-06-17 12:40 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-15 18:36 [PATCH 00/15] Batch submission via GuC Dave Gordon
2015-06-15 18:36 ` [PATCH 01/15] drm/i915: Add i915_gem_object_write() to i915_gem.c Dave Gordon
2015-06-15 20:09 ` Chris Wilson
2015-06-17 7:23 ` Dave Gordon
2015-06-17 12:02 ` Daniel Vetter
2015-06-18 11:49 ` Dave Gordon
2015-06-18 12:10 ` Chris Wilson
2015-06-18 18:07 ` Dave Gordon
2015-06-19 8:44 ` Chris Wilson
2015-06-22 11:59 ` Dave Gordon
2015-06-22 12:37 ` Chris Wilson
2015-06-23 16:54 ` Dave Gordon
2015-06-18 14:31 ` Daniel Vetter
2015-06-18 18:28 ` Dave Gordon
2015-06-24 9:32 ` Daniel Vetter
2015-06-25 12:28 ` Dave Gordon
2015-06-24 9:40 ` Chris Wilson
2015-06-15 18:36 ` [PATCH 02/15] drm/i915: Embedded microcontroller (uC) firmware loading support Dave Gordon
2015-06-17 12:05 ` Daniel Vetter
2015-06-18 12:11 ` Dave Gordon
2015-06-18 14:49 ` Daniel Vetter
2015-06-18 15:27 ` Chris Wilson
2015-06-18 15:35 ` Daniel Vetter
2015-06-18 15:49 ` Chris Wilson
2015-06-19 8:43 ` Dave Gordon
2015-06-24 10:29 ` Daniel Vetter
2015-07-06 12:44 ` Dave Gordon
2015-07-06 13:24 ` Daniel Vetter
2015-06-15 18:36 ` [PATCH 03/15] drm/i915: Add GuC-related module parameters Dave Gordon
2015-06-15 18:36 ` [PATCH 04/15] drm/i915: Add GuC-related header files Dave Gordon
2015-06-15 20:20 ` Chris Wilson
2015-06-17 15:01 ` Dave Gordon
2015-06-23 18:10 ` Dave Gordon
2015-06-24 7:41 ` Dave Gordon
2015-06-24 9:37 ` Daniel Vetter
2015-06-15 18:36 ` [PATCH 05/15] drm/i915: GuC-specific firmware loader Dave Gordon
2015-06-15 20:30 ` Chris Wilson
2015-06-18 17:53 ` Yu Dai
2015-06-18 20:12 ` Chris Wilson
2015-06-19 14:34 ` Dave Gordon
2015-06-18 18:54 ` Dave Gordon
2015-06-15 18:36 ` [PATCH 06/15] drm/i915: Debugfs interface to read GuC load status Dave Gordon
2015-06-16 9:40 ` Chris Wilson
2015-06-19 7:49 ` Dave Gordon
2015-06-15 18:36 ` [PATCH 07/15] drm/i915: Defer default hardware context initialisation until first open Dave Gordon
2015-06-16 9:35 ` Chris Wilson
2015-06-19 9:42 ` Dave Gordon
2015-06-17 12:18 ` Daniel Vetter
2015-06-19 9:19 ` Dave Gordon
2015-06-24 10:15 ` Daniel Vetter
2015-06-15 18:36 ` [PATCH 08/15] drm/i915: Move execlists defines from .c to .h Dave Gordon
2015-06-16 9:37 ` Chris Wilson
2015-06-17 7:31 ` Dave Gordon
2015-06-17 7:54 ` Chris Wilson
2015-06-17 7:59 ` Chris Wilson
2015-06-22 13:05 ` Dave Gordon
2015-06-15 18:36 ` [PATCH 09/15] drm/i915: GuC submission setup, phase 1 Dave Gordon
2015-06-15 21:32 ` Chris Wilson
2015-06-19 17:02 ` Dave Gordon
2015-06-19 17:22 ` Dave Gordon
2015-06-16 11:44 ` Chris Wilson
2015-06-15 18:36 ` [PATCH 10/15] drm/i915: Enable GuC firmware log Dave Gordon
2015-06-15 21:40 ` Chris Wilson
2015-06-16 9:26 ` Tvrtko Ursulin
2015-06-16 11:40 ` Chris Wilson
2015-06-16 12:29 ` Tvrtko Ursulin
2015-06-15 18:36 ` [PATCH 11/15] drm/i915: Implementation of GuC client Dave Gordon
2015-06-15 21:55 ` Chris Wilson
2015-06-19 17:55 ` Dave Gordon
2015-06-15 18:36 ` [PATCH 12/15] drm/i915: Interrupt routing for GuC submission Dave Gordon
2015-06-16 9:24 ` Chris Wilson
2015-06-17 8:20 ` Dave Gordon
2015-06-17 12:22 ` Daniel Vetter
2015-06-17 12:41 ` Daniel Vetter
2015-06-23 11:33 ` Dave Gordon
2015-06-23 23:48 ` Yu Dai
2015-06-24 10:02 ` Daniel Vetter
2015-06-15 18:36 ` [PATCH 13/15] drm/i915: Integrate GuC-based command submission Dave Gordon
2015-06-16 9:22 ` Chris Wilson
2015-06-19 18:18 ` Dave Gordon
2015-06-15 18:36 ` [PATCH 14/15] drm/i915: Debugfs interface for GuC submission statistics Dave Gordon
2015-06-16 9:28 ` Chris Wilson
2015-06-24 8:27 ` Dave Gordon
2015-06-15 18:36 ` [PATCH 15/15] Documentation/drm: kerneldoc for GuC Dave Gordon
2015-06-15 18:36 ` [PATCH 16/15] drm/i915: Enable GuC submission, where supported Dave Gordon
2015-06-17 12:43 ` Daniel Vetter [this message]
2015-06-25 7:23 ` [PATCH 00/15] Batch submission via GuC Dave Gordon
2015-06-25 8:05 ` Chris Wilson
2015-06-24 12:16 ` Daniel Vetter
2015-06-24 12:57 ` Chris Wilson
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=20150617124338.GV23637@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=ben@bwidawsk.net \
--cc=david.s.gordon@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=vinit.azad@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox