drm/i915: Force reset on unready engine
authorMika Kuoppala <mika.kuoppala@linux.intel.com>
Mon, 13 Aug 2018 13:01:16 +0000 (16:01 +0300)
committerMika Kuoppala <mika.kuoppala@linux.intel.com>
Mon, 13 Aug 2018 14:00:00 +0000 (17:00 +0300)
commitf4e60c5cfbf217cc9faa3aeb63742860154fcfef
tree5f7faf8058872c0e82f1ccb9dfc398f28a25aeb8
parente02e65001e7b436f3590ec6acff259ec54689df5
drm/i915: Force reset on unready engine

If engine reports that it is not ready for reset, we
give up. Evidence shows that forcing a per engine reset
on an engine which is not reporting to be ready for reset,
can bring it back into a working order. There is risk that
we corrupt the context image currently executing on that
engine. But that is a risk worth taking as if we unblock
the engine, we prevent a whole device wedging in a case
of full gpu reset.

Reset individual engine even if it reports that it is not
prepared for reset, but only if we aim for full gpu reset
and not on first reset attempt.

v2: force reset only on later attempts, readability (Chris)
v3: simplify with adequate caffeine levels (Chris)
v4: comment about risks and migitations (Chris)

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