]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915/execlists: Reinitialise context image after GPU hang
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 4 Oct 2016 20:11:26 +0000 (21:11 +0100)
committerJani Nikula <jani.nikula@intel.com>
Mon, 10 Oct 2016 13:06:42 +0000 (16:06 +0300)
commit92af287ba2f0b329eae686fe7ca46d4acd15d42a
treeb1b2afb65d9aa3f008e79fdddb43c0aa8700ada5
parent5713dd24d005641b885b479c3259412277e7c95d
drm/i915/execlists: Reinitialise context image after GPU hang

On Braswell, at least, we observe that the context image is written in
multiple phases. The first phase is to clear the register state, and
subsequently rewrite it. A GPU reset at the right moment can interrupt
the context update leaving it corrupt, and our update of the RING_HEAD
is not sufficient to restart the engine afterwards. To recover, we need
to reset the registers back to their original values. The context state
is lost. What we need is a better mechanism to serialise the reset with
pending flushes from the GPU.

Fixes: 6d06f21c4b91 ("drm/i915: Update reset path to fix incomplete requests")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20161004201132.21801-2-chris@chris-wilson.co.uk
(cherry picked from commit a3aabe86a3406b9946a4f7707762a833a58dfe9c)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/intel_lrc.c