[Intel-gfx] [RFC 00/38] Preemption support for GPU scheduler
John.C.Harrison at Intel.com
John.C.Harrison at Intel.com
Fri Dec 11 06:50:58 PST 2015
From: John Harrison <John.C.Harrison at Intel.com>
Added pre-emption support to the i915 GPU scheduler.
Note that this patch series was written by David Gordon. I have simply
ported it onto a more recent set of scheduler patches and am uploading
it as part of that work so that everything can be viewed at once. Also
because David is on extended vacation at the moment. Not that the
series is being sent as an RFC as there are still some things to be
tidied up. Most notably the commit messages are missing in a few
places. I am leaving those to be filled in by David when he returns.
Also, the series includes a few general fix up and improvement patches
that are not directly related to pre-emption. E.g. for improving the
error capture state. However, the pre-emption code is built upon them
so right now it is much simpler to just send the whole lot out as a
single series. It can be broken up into separate patch sets if/when
people decide it is all good stuff to be doing.
Re the pre-emption itself. It is functional and working but with the
caveat that it requires the GuC. Hence it is only operation on SKL or
later hardware. If the GuC is not available then the pre-emption
support is simply disabled in the scheduler.
v2: Updated for changes to scheduler - use locally cached request
pointer.
Re-worked the 'pre-emption in progress' logic inside the notify code
to simplify it.
Implemented support for mid-batch pre-emption. This must be treated
differently to bettween-batch pre-emption.
Fixed a couple of trace point issues.
[Patches against drm-intel-nightly tree fetched 17/11/2015 with struct fence
conversion and GPU scheduler patches applied]
Dave Gordon (37):
drm/i915: update ring space correctly
drm/i915: recalculate ring space after reset
drm/i915: hangcheck=idle should wake_up_all every time, not just once
drm/i915/error: capture execlist state on error
drm/i915/error: capture ringbuffer pointed to by START
drm/i915/error: report ctx id & desc for each request in the queue
drm/i915/error: improve CSB reporting
drm/i915/error: report size in pages for each object dumped
drm/i915/error: track, capture & print ringbuffer submission activity
drm/i915/guc: Tidy up GuC proc/ctx descriptor setup
drm/i915/guc: Add a second client, to be used for preemption
drm/i915/guc: implement submission via REQUEST_PREEMPTION action
drm/i915/guc: Improve action error reporting, add preemption debug
drm/i915/guc: Expose GuC-maintained statistics
drm/i915: add i915_wait_request() call after i915_add_request_no_flush()
drm/i915/guc: Expose (intel)_lr_context_size()
drm/i915/guc: Add support for GuC ADS (Addition Data Structure)
drm/i915/guc: Fill in (part of?) the ADS whitelist
drm/i915/error: capture errored context based on request context-id
drm/i915/error: enhanced error capture of requests
drm/i915/error: add GuC state error capture & decode
drm/i915: track relative-constants-mode per-context not per-device
drm/i915: set request 'head' on allocation not in add_request()
drm/i915/sched: set request 'head' on at start of ring submission
drm/i915/sched: include scheduler state in error capture
drm/i915/preempt: preemption-related definitions and statistics
drm/i915/preempt: scheduler logic for queueing preemptive requests
drm/i915/preempt: scheduler logic for selecting preemptive requests
drm/i915/preempt: scheduler logic for preventing recursive preemption
drm/i915/preempt: don't allow nonbatch ctx init when the scheduler is
busy
drm/i915/preempt: scheduler logic for landing preemptive requests
drm/i915/preempt: add hook to catch 'unexpected' ring submissions
drm/i915/preempt: Refactor intel_lr_context_reset()
drm/i915/preempt: scheduler logic for postprocessing preemptive
requests
drm/i915/preempt: Implement mid-batch preemption support
drm/i915/preempt: update (LRC) ringbuffer-filling code to create
preemptive requests
drm/i915/preempt: update scheduler parameters to enable preemption
John Harrison (1):
drm/i915: Added preemption info to various trace points
drivers/gpu/drm/i915/i915_debugfs.c | 50 ++-
drivers/gpu/drm/i915/i915_drv.h | 34 +-
drivers/gpu/drm/i915/i915_gem.c | 122 +++++++-
drivers/gpu/drm/i915/i915_gem_context.c | 5 +-
drivers/gpu/drm/i915/i915_gem_execbuffer.c | 9 +-
drivers/gpu/drm/i915/i915_gpu_error.c | 307 ++++++++++++++++--
drivers/gpu/drm/i915/i915_guc_reg.h | 1 +
drivers/gpu/drm/i915/i915_guc_submission.c | 243 +++++++++++---
drivers/gpu/drm/i915/i915_irq.c | 23 +-
drivers/gpu/drm/i915/i915_scheduler.c | 487 ++++++++++++++++++++++++++---
drivers/gpu/drm/i915/i915_scheduler.h | 49 ++-
drivers/gpu/drm/i915/i915_trace.h | 30 +-
drivers/gpu/drm/i915/intel_guc.h | 31 +-
drivers/gpu/drm/i915/intel_guc_fwif.h | 93 +++++-
drivers/gpu/drm/i915/intel_guc_loader.c | 14 +-
drivers/gpu/drm/i915/intel_lrc.c | 333 ++++++++++++++++----
drivers/gpu/drm/i915/intel_lrc.h | 8 +-
drivers/gpu/drm/i915/intel_ringbuffer.c | 2 +-
drivers/gpu/drm/i915/intel_ringbuffer.h | 15 +
19 files changed, 1595 insertions(+), 261 deletions(-)
--
1.9.1
More information about the Intel-gfx
mailing list