kernel-fxtec-pro1x/drivers/gpu/drm/i915
Daniel Vetter 99fcb766a3 drm/i915: Update write_domains on active list after flush.
Before changing the status of a buffer with a pending write we will await
upon a new flush for that buffer. So we can take advantage of any flushes
posted whilst the buffer is active and pending processing by the GPU, by
clearing its write_domain and updating its last_rendering_seqno -- thus
saving a potential flush in deep queues and improves flushing behaviour
upon eviction for both GTT space and fences.

In order to reduce the time spent searching the active list for matching
write_domains, we move those to a separate list whose elements are
the buffers belong to the active/flushing list with pending writes.

Orignal patch by Chris Wilson <chris@chris-wilson.co.uk>, forward-ported
by me.

In addition to better performance, this also fixes a real bug. Before
this changes, i915_gem_evict_everything didn't work as advertised. When
the gpu was actually busy and processing request, the flush and subsequent
wait would not move active and dirty buffers to the inactive list, but
just to the flushing list. Which triggered the BUG_ON at the end of this
function. With the more tight dirty buffer tracking, all currently busy and
dirty buffers get moved to the inactive list by one i915_gem_flush operation.

I've left the BUG_ON I've used to prove this in there.

References:
  Bug 25911 - 2.10.0 causes kernel oops and system hangs
  http://bugs.freedesktop.org/show_bug.cgi?id=25911

  Bug 26101 - [i915] xf86-video-intel 2.10.0 (and git) triggers kernel oops
              within seconds after login
  http://bugs.freedesktop.org/show_bug.cgi?id=26101

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Tested-by: Adam Lantos <hege@playma.org>
Cc: stable@kernel.org
Signed-off-by: Eric Anholt <eric@anholt.net>
2010-02-10 13:31:45 -08:00
..
dvo.h
dvo_ch7xxx.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
dvo_ch7017.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
dvo_ivch.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
dvo_sil164.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
dvo_tfp410.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
i915_debugfs.c drm/i915: Selectively enable self-reclaim 2010-01-27 09:26:43 -08:00
i915_dma.c drm/i915: enable 36bit physical address for hardware status page 2010-01-15 14:50:14 -08:00
i915_drv.c drm/i915: Fix the device info of Pineview 2010-01-25 09:23:13 -08:00
i915_drv.h drm/i915: Update write_domains on active list after flush. 2010-02-10 13:31:45 -08:00
i915_gem.c drm/i915: Update write_domains on active list after flush. 2010-02-10 13:31:45 -08:00
i915_gem_debug.c
i915_gem_tiling.c drm/i915: execbuf2 support 2010-01-06 09:39:39 -08:00
i915_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
i915_irq.c drm/i915: page flip support for Ironlake 2010-01-29 15:29:47 -08:00
i915_mem.c
i915_opregion.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
i915_reg.h drm/i915: Fix the incorrect cursor A bit definition in DSPFW2 register 2010-01-15 14:06:19 -08:00
i915_suspend.c drm/i915: Fix RC6 suspend/resume 2010-01-06 09:39:53 -08:00
i915_trace.h drm/i915: Enable irq to trace batch buffer completion. 2009-09-29 03:15:25 +01:00
i915_trace_points.c drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00
intel_bios.c drm/i915: parse eDP panel color depth from VBT block 2010-01-15 14:12:47 -08:00
intel_bios.h drm/i915: parse eDP panel color depth from VBT block 2010-01-15 14:12:47 -08:00
intel_crt.c drm/i915: disable hotplug detect before Ironlake CRT detect 2010-01-25 08:52:54 -08:00
intel_display.c drm/i915: Rework DPLL calculation parameters for Ironlake 2010-02-10 13:05:57 -08:00
intel_dp.c drm/i915: fix eDP pipe mask 2010-01-15 14:13:18 -08:00
intel_drv.h drm/i915: restore render clock gating on resume 2009-12-08 06:32:51 -08:00
intel_dvo.c
intel_fb.c Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2009-12-10 21:56:47 -08:00
intel_hdmi.c drm/i915: Don't use the child device parsed from VBT to setup HDMI/DP 2010-01-12 14:40:03 -08:00
intel_i2c.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
intel_lvds.c drm/i915: slow acpi_lid_open() causes flickering - V2 2010-02-04 08:36:45 -08:00
intel_modes.c
intel_overlay.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
intel_sdvo.c drm/i915: Add support for SDVO composite TV 2010-01-29 14:35:32 -08:00
intel_sdvo_regs.h
intel_tv.c drm/i915: disable TV hotplug status check 2010-01-07 10:00:39 -08:00
Makefile Merge remote branch 'anholt/drm-intel-next' into drm-linus 2009-12-08 14:03:47 +10:00