drm/i915/execlists: Unwind incomplete requests on resets
authorChris Wilson <chris@chris-wilson.co.uk>
Sat, 16 Sep 2017 20:44:14 +0000 (21:44 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 18 Sep 2017 10:00:12 +0000 (11:00 +0100)
commit221ab9719bf33ad2984928d2afb20988d652a289
tree1ade9384dc20abe0d1d4b666d86718777359bcd4
parent27606fd87895c3b45072a796caead8055a2f4b94
drm/i915/execlists: Unwind incomplete requests on resets

Given the mechanism to unwind and replay requests (designed to support
preemption), we have an alternative to the current method of
resubmitting the ELSP upon reset. Resubmitting ELSP turns out to be more
complicated than expected, due to having to handle lost context-switch
interrupts and so guessing what ELSP we need to resubmit later. Instead,
by unwinding the requests and clearing the ELSP tracking entirely, we
can then just dequeue the first pair of ready requests after resetting,
using the normal submission procedure.

Currently, the unwound requests have maximum priority and so are
guaranteed to be resubmitted upon resume. If we are lucky, we may be
able to coalesce a new request on top!

Suggested-by: Michał Winiarski <michal.winiarski@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170916204414.32762-4-chris@chris-wilson.co.uk
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
drivers/gpu/drm/i915/intel_lrc.c