]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915/preemption: Allow preemption between submission ports
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 22 Feb 2018 14:22:29 +0000 (14:22 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 23 Feb 2018 16:37:40 +0000 (16:37 +0000)
commitd30df2bffe5a7afa6495265a0f0e2c71377676a0
treed705670db1d793efc8d42288768c84f3cb36e9a2
parent3a2838ff59271a834aa32e1755400ee7f7dc9e4e
drm/i915/preemption: Allow preemption between submission ports

Sometimes we need to boost the priority of an in-flight request, which
may lead to the situation where the second submission port then contains
a higher priority context than the first and so we need to inject a
preemption event. To do so we must always check inside
execlists_dequeue() whether there is a priority inversion between the
ports themselves as well as the head of the priority sorted queue, and we
cannot just skip dequeuing if the queue is empty.

As Michał noted, this doesn't simply extend to handling more than 2-port
submission, as we may need to reorder within the array of executing
requests which themselves are lower priority than the first. A task for
later!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Michel Thierry <michel.thierry@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180222142229.14517-1-chris@chris-wilson.co.uk
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
drivers/gpu/drm/i915/intel_engine_cs.c
drivers/gpu/drm/i915/intel_guc_submission.c
drivers/gpu/drm/i915/intel_lrc.c
drivers/gpu/drm/i915/intel_ringbuffer.h