linux/drivers/gpu/drm/i915
Chris Wilson 85345517fe 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
2010-11-13 09:49:11 +00:00
..
dvo_ch7xxx.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_ch7017.c drm/i915: Tidy dvo_ch7017 and print out which chip we detect 2010-09-28 23:33:17 +01:00
dvo_ivch.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_sil164.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_tfp410.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2010-10-26 18:57:59 -07:00
i915_dma.c drm/i915: IS_IRONLAKE is synonymous with gen == 5 2010-10-21 19:08:39 +01:00
i915_drv.c drm/i915: Allow powersave modparam to be adjusted at runtime. 2010-11-02 09:23:22 +00:00
i915_drv.h drm/i915: Retire any pending operations on the old scanout when switching 2010-11-13 09:49:11 +00:00
i915_gem_debug.c drm/i915/debug: Convert i915_verify_active() to scan all lists 2010-09-30 09:30:11 +01:00
i915_gem_evict.c drm/i915: Flush read-only buffers from the active list upon idle as well 2010-10-28 21:31:19 +01:00
i915_gem_tiling.c drm/i915: IS_IRONLAKE is synonymous with gen == 5 2010-10-21 19:08:39 +01:00
i915_gem.c drm/i915: Retire any pending operations on the old scanout when switching 2010-11-13 09:49:11 +00:00
i915_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
i915_irq.c Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2010-10-26 18:57:59 -07:00
i915_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
i915_reg.h i915: enable AVI infoframe for intel_hdmi.c [v4] 2010-10-22 09:14:30 +01:00
i915_suspend.c i915: reprogram power monitoring registers on resume 2010-11-03 21:44:47 +00:00
i915_trace_points.c drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00
i915_trace.h drm/i915: add tracepoints for flip requests & completions 2010-07-02 14:04:14 +10:00
intel_acpi.c drm/i915: add _DSM support 2010-10-08 10:27:43 +01:00
intel_bios.c drm/i915: IS_IRONLAKE is synonymous with gen == 5 2010-10-21 19:08:39 +01:00
intel_bios.h drm/i915: Initialize panel timing registers if VBIOS did not 2010-10-19 09:17:24 +01:00
intel_crt.c drm/i915/crt: Make sure the hotplug interrupt is enabled 2010-10-08 10:28:29 +01:00
intel_display.c drm/i915: Retire any pending operations on the old scanout when switching 2010-11-13 09:49:11 +00:00
intel_dp.c drm/i915: Fix typo from "Enable DisplayPort Audio" 2010-10-27 08:53:28 +01:00
intel_drv.h i915: reprogram power monitoring registers on resume 2010-11-03 21:44:47 +00:00
intel_dvo.c drm/i915/dvo: Fix panel and DDC i2c pins 2010-09-28 23:34:44 +01:00
intel_fb.c Merge remote branch 'airlied/drm-core-next' into tmp 2010-10-19 09:14:50 +01:00
intel_hdmi.c i915: enable AVI infoframe for intel_hdmi.c [v4] 2010-10-22 09:14:30 +01:00
intel_i2c.c drm/i915: Fix I2C adapter registration 2010-11-09 23:04:52 +00:00
intel_lvds.c drm/i915: Fix LVDS fixed-mode regression from 219adae1 2010-11-09 00:59:32 +00:00
intel_modes.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
intel_opregion.c drm/i915: opregion_setup: iounmap correct address 2010-11-01 10:29:12 +00:00
intel_overlay.c i915: signedness bug in check_overlay_src() 2010-10-27 22:57:59 +01:00
intel_panel.c drm/i915: INTEL_INFO->gen supercedes i8xx, i9xx, i965g 2010-09-21 11:19:45 +01:00
intel_ringbuffer.c drm/i915/ringbuffer: Use the HEAD auto-reporting mechanism 2010-11-08 09:21:47 +00:00
intel_ringbuffer.h drm/i915: SNB BLT workaround 2010-11-02 10:48:48 +00:00
intel_sdvo_regs.h drm/i915/sdvo: Add missing TV filters 2010-08-09 11:24:29 -07:00
intel_sdvo.c drm/i915/sdvo: Remove unused encoding member 2010-10-22 09:15:22 +01:00
intel_tv.c Merge branch 'drm-intel-fixes' into drm-intel-next 2010-10-03 10:56:11 +01:00
Makefile drm/i915: add _DSM support 2010-10-08 10:27:43 +01:00