]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Retire any pending operations on the old scanout when switching
authorChris Wilson <chris@chris-wilson.co.uk>
Sat, 13 Nov 2010 09:49:11 +0000 (09:49 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Sat, 13 Nov 2010 09:49:11 +0000 (09:49 +0000)
commitdd8b98a9a64ac86a9600f244aa3c4b886cba02b6
tree6838e17e790c99c1cd90ada31f31714208d6d3c6
parent64de2e819af64f03493972bb2c0828912dfdc7ce
drm/i915: Retire any pending operations on the old scanout when switching

An old and oft reported bug, is that of the GPU hanging on a
MI_WAIT_FOR_EVENT following a mode switch. The cause is that the GPU is
waiting on a scanline counter on an inactive pipe, and so waits for a
very long time until eventually the user reboots his machine.

We can prevent this either by moving the WAIT into the kernel and
thereby incurring considerable cost on every swapbuffers, or by waiting
for the GPU to retire the last batch that accesses the framebuffer
before installing a new one. As mode switches are much rarer than swap
buffers, this looks like an easy choice.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=28964
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29252
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/intel_display.c