]> 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)
commit6fc6fc0d3079360471d2f10c30b53f52ef212c27
treeb1b2afb65d9aa3f008e79fdddb43c0aa8700ada5
parenta0aabfd47173196a1b33371aefdc9e65d79592f7
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: de44a5363c60 ("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