drm/i915: Clear stop-engine for a pardoned reset
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 14 Aug 2018 17:18:57 +0000 (18:18 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 15 Aug 2018 09:15:28 +0000 (10:15 +0100)
commita99b32a6fff7e482a267c72e565c8c410ce793d7
tree92bd3fdd4d402c9264c09da8b966e911b4ef0117
parent08ea70a417baa1c0e5faa580070cd2ffd04e6285
drm/i915: Clear stop-engine for a pardoned reset

If we pardon a per-engine reset, we may leave the STOP_RING bit asserted
in RING_MI_MODE resulting in the engine hanging. Unconditionally clear
it on the per-engine exit path as we know that either we skipped the
reset and so need the cancellation, or the reset was successful and the
cancellation is a no-op, or there was an error and we will follow up
with a full-reset or wedging (both of which will stop the engines again
as required).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107188
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106560
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180814171857.24673-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/intel_engine_cs.c
drivers/gpu/drm/i915/intel_ringbuffer.h