OSDN Git Service

drm/i915/gt: Always reset the engine, even if inactive, on execlists failure
authorChris Wilson <chris@chris-wilson.co.uk>
Sat, 11 Jul 2020 09:13:49 +0000 (10:13 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 13 Jul 2020 10:18:08 +0000 (11:18 +0100)
commit2730055dcb9a07f8aca27e6911defc29b41c71df
treef16320afdd2eff973cd4e0e5bc245d7190ff684b
parent68172f2c0b8acc5609284651f1316246f3a3a65b
drm/i915/gt: Always reset the engine, even if inactive, on execlists failure

If something has gone awry with the CSB processing, we need to pause,
unwind and restart the request submission and event processing. However,
currently we skip the engine reset if we raise an error but discover no
active context, in the mistaken belief that it was merely a glitch in
the matrix. The glitches are real enough, and we do need to unwind even
if the engine appears idle (as it has gone permanently idle!) The
simplest way to unwind and recover is simply do the engine reset, which
should be very fast and _safe_ as nothing is active.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200711091349.28865-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_lrc.c