intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [RFC 00/37] Preemption support for GPU scheduler
@ 2015-11-23 11:41 John.C.Harrison
  2015-11-23 11:41 ` [RFC 01/37] drm/i915: update ring space correctly John.C.Harrison
                   ` (38 more replies)
  0 siblings, 39 replies; 45+ messages in thread
From: John.C.Harrison @ 2015-11-23 11:41 UTC (permalink / raw)
  To: Intel-GFX

From: John Harrison <John.C.Harrison@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.

[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@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 45+ messages in thread

end of thread, other threads:[~2015-12-11 14:51 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-23 11:41 [RFC 00/37] Preemption support for GPU scheduler John.C.Harrison
2015-11-23 11:41 ` [RFC 01/37] drm/i915: update ring space correctly John.C.Harrison
2015-11-23 11:41 ` [RFC 02/37] drm/i915: recalculate ring space after reset John.C.Harrison
2015-11-23 11:41 ` [RFC 03/37] drm/i915: hangcheck=idle should wake_up_all every time, not just once John.C.Harrison
2015-11-23 11:41 ` [RFC 04/37] drm/i915/error: capture execlist state on error John.C.Harrison
2015-11-23 11:41 ` [RFC 05/37] drm/i915/error: capture ringbuffer pointed to by START John.C.Harrison
2015-11-23 11:41 ` [RFC 06/37] drm/i915/error: report ctx id & desc for each request in the queue John.C.Harrison
2015-11-23 11:41 ` [RFC 07/37] drm/i915/error: improve CSB reporting John.C.Harrison
2015-11-23 11:41 ` [RFC 08/37] drm/i915/error: report size in pages for each object dumped John.C.Harrison
2015-11-23 11:41 ` [RFC 09/37] drm/i915/error: track, capture & print ringbuffer submission activity John.C.Harrison
2015-11-23 11:41 ` [RFC 10/37] drm/i915/guc: Tidy up GuC proc/ctx descriptor setup John.C.Harrison
2015-11-23 11:41 ` [RFC 11/37] drm/i915/guc: Add a second client, to be used for preemption John.C.Harrison
2015-11-23 11:41 ` [RFC 12/37] drm/i915/guc: implement submission via REQUEST_PREEMPTION action John.C.Harrison
2015-11-23 11:41 ` [RFC 13/37] drm/i915/guc: Improve action error reporting, add preemption debug John.C.Harrison
2015-11-23 11:41 ` [RFC 14/37] drm/i915/guc: Expose GuC-maintained statistics John.C.Harrison
2015-11-23 11:41 ` [RFC 15/37] drm/i915: add i915_wait_request() call after i915_add_request_no_flush() John.C.Harrison
2015-11-23 11:41 ` [RFC 16/37] drm/i915/guc: Expose (intel)_lr_context_size() John.C.Harrison
2015-11-23 11:41 ` [RFC 17/37] drm/i915/guc: Add support for GuC ADS (Addition Data Structure) John.C.Harrison
2015-11-23 11:41 ` [RFC 18/37] drm/i915/guc: Fill in (part of?) the ADS whitelist John.C.Harrison
2015-11-23 11:41 ` [RFC 19/37] drm/i915/error: capture errored context based on request context-id John.C.Harrison
2015-11-23 11:41 ` [RFC 20/37] drm/i915/error: enhanced error capture of requests John.C.Harrison
2015-11-23 11:41 ` [RFC 21/37] drm/i915/error: add GuC state error capture & decode John.C.Harrison
2015-11-23 11:41 ` [RFC 22/37] drm/i915: track relative-constants-mode per-context not per-device John.C.Harrison
2015-11-23 11:41 ` [RFC 23/37] drm/i915: set request 'head' on allocation not in add_request() John.C.Harrison
2015-11-23 11:41 ` [RFC 24/37] drm/i915/sched: set request 'head' on at start of ring submission John.C.Harrison
2015-12-11 14:46   ` [RFC 24/38] " John.C.Harrison
2015-11-23 11:42 ` [RFC 25/37] drm/i915/sched: include scheduler state in error capture John.C.Harrison
2015-11-23 11:42 ` [RFC 26/37] drm/i915/preempt: preemption-related definitions and statistics John.C.Harrison
2015-11-23 11:42 ` [RFC 27/37] drm/i915/preempt: scheduler logic for queueing preemptive requests John.C.Harrison
2015-11-23 11:42 ` [RFC 28/37] drm/i915/preempt: scheduler logic for selecting " John.C.Harrison
2015-11-23 11:42 ` [RFC 29/37] drm/i915/preempt: scheduler logic for preventing recursive preemption John.C.Harrison
2015-11-23 11:42 ` [RFC 30/37] drm/i915/preempt: don't allow nonbatch ctx init when the scheduler is busy John.C.Harrison
2015-11-23 11:42 ` [RFC 31/37] drm/i915/preempt: scheduler logic for landing preemptive requests John.C.Harrison
2015-12-11 14:48   ` [RFC 31/38] " John.C.Harrison
2015-11-23 11:42 ` [RFC 32/37] drm/i915/preempt: add hook to catch 'unexpected' ring submissions John.C.Harrison
2015-12-11 14:49   ` [RFC 32/38] " John.C.Harrison
2015-11-23 11:42 ` [RFC 33/37] drm/i915/preempt: Refactor intel_lr_context_reset() John.C.Harrison
2015-11-23 11:42 ` [RFC 34/37] drm/i915/preempt: scheduler logic for postprocessing preemptive requests John.C.Harrison
2015-11-23 11:42 ` [RFC 35/37] drm/i915/preempt: update (LRC) ringbuffer-filling code to create " John.C.Harrison
2015-12-11 14:49   ` [RFC 36/38] " John.C.Harrison
2015-11-23 11:42 ` [RFC 36/37] drm/i915/preempt: update scheduler parameters to enable preemption John.C.Harrison
2015-11-23 11:42 ` [RFC 37/37] drm/i915: Added preemption info to various trace points John.C.Harrison
2015-12-11 14:50   ` [RFC 38/38] " John.C.Harrison
2015-12-11 14:50 ` [RFC 35/38] drm/i915/preempt: Implement mid-batch preemption support John.C.Harrison
2015-12-11 14:50 ` [RFC 00/38] Preemption support for GPU scheduler John.C.Harrison

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).