aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_ringbuffer.c
diff options
context:
space:
mode:
authorChris Wilson <[email protected]>2017-03-27 13:00:07 +0000
committerChris Wilson <[email protected]>2017-03-27 14:02:56 +0000
commit450362d3fe866b14304f309b5fffba0c33fbfbc3 (patch)
treec53e201e5df3e0382777dad59052deb7d9de1d06 /drivers/gpu/drm/i915/intel_ringbuffer.c
parentdrm/i915: Use i9xx_check_plane_surface() for sprite planes as well (diff)
downloadkernel-450362d3fe866b14304f309b5fffba0c33fbfbc3.tar.gz
kernel-450362d3fe866b14304f309b5fffba0c33fbfbc3.zip
drm/i915/execlists: Wrap tail pointer after reset tweaking
If the request->wa_tail is 0 (because it landed exactly on the end of the ringbuffer), when we reconstruct request->tail following a reset we fill in an illegal value (-8 or 0x001ffff8). As a result, RING_HEAD is never able to catch up with RING_TAIL and the GPU spins endlessly. If the ring contains a couple of breadcrumbs, even our hangcheck is unable to catch the busy-looping as the ACTHD and seqno continually advance. v2: Move the wrap into a common intel_ring_wrap(). Fixes: a3aabe86a340 ("drm/i915/execlists: Reinitialise context image after GPU hang") Signed-off-by: Chris Wilson <[email protected]> Cc: Mika Kuoppala <[email protected]> Cc: <[email protected]> # v4.10+ Link: http://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Mika Kuoppala <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
0 files changed, 0 insertions, 0 deletions