From: John Harrison <John.C.Harrison@xxxxxxxxx> 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. [Patches against drm-intel-nightly tree fetched 17/11/2015 with struct fence conversion and GPU scheduler patches applied] Dave Gordon (36): 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: 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 | 49 +++- drivers/gpu/drm/i915/i915_drv.h | 34 ++- drivers/gpu/drm/i915/i915_gem.c | 136 ++++++++- 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 | 445 ++++++++++++++++++++++++++--- drivers/gpu/drm/i915/i915_scheduler.h | 46 ++- drivers/gpu/drm/i915/i915_trace.h | 31 +- 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 | 282 +++++++++++++----- drivers/gpu/drm/i915/intel_lrc.h | 7 +- drivers/gpu/drm/i915/intel_ringbuffer.c | 2 +- drivers/gpu/drm/i915/intel_ringbuffer.h | 14 + 19 files changed, 1511 insertions(+), 261 deletions(-) -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx