linux/drivers/gpu/drm/i915
Chris Wilson cd377ea93f drm/i915: Implement fair lru eviction across both rings. (v2)
Based in a large part upon Daniel Vetter's implementation and adapted
for handling multiple rings in a single pass.

This should lead to better gtt usage and fixes the page-fault-of-doom
triggered. The fairness is provided by scanning through the GTT space
amalgamating space in rendering order. As soon as we have a contiguous
space in the GTT large enough for the new object (and its alignment),
evict any object which lies within that space. This should keep more
objects resident in the GTT.

Doing throughput testing on a PineView machine with cairo-perf-trace
indicates that there is very little difference with the new LRU scan,
perhaps a small improvement... Except oddly for the poppler trace.

Reference:

  Bug 15911 - Intermittent X crash (freeze)
  https://bugzilla.kernel.org/show_bug.cgi?id=15911

  Bug 20152 - cannot view JPG in firefox when running UXA
  https://bugs.freedesktop.org/show_bug.cgi?id=20152

  Bug 24369 - Hang when scrolling firefox page with window in front
  https://bugs.freedesktop.org/show_bug.cgi?id=24369

  Bug 28478 - Intermittent graphics lockups due to overflow/loop
  https://bugs.freedesktop.org/show_bug.cgi?id=28478

v2: Attempt to clarify the logic and order of eviction through the use
of comments and macros.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Eric Anholt <eric@anholt.net>
2010-08-09 11:24:32 -07:00
..
dvo_ch7xxx.c drm/i915: Remove dead KMS encoder save/restore code. 2010-04-12 09:23:30 -07:00
dvo_ch7017.c drm/i915: Remove dead KMS encoder save/restore code. 2010-04-12 09:23:30 -07:00
dvo_ivch.c drm/i915: Remove dead KMS encoder save/restore code. 2010-04-12 09:23:30 -07:00
dvo_sil164.c drm/i915: Remove dead KMS encoder save/restore code. 2010-04-12 09:23:30 -07:00
dvo_tfp410.c drm/i915: Use RSEN instead of HTPLG for tfp410 monitor detection. 2010-06-04 16:39:59 -07:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c drm/i915: Capture the overlay status upon a GPU hang. 2010-08-09 11:24:31 -07:00
i915_dma.c drm/agp/i915: trim stolen space to 32M 2010-08-01 19:58:57 -07:00
i915_drv.c drm/i915: Refactor i915_gem_retire_requests() 2010-08-01 19:52:57 -07:00
i915_drv.h drm/i915: Implement fair lru eviction across both rings. (v2) 2010-08-09 11:24:32 -07:00
i915_gem_debug.c drm/i915: drop pointer to drm_gem_object 2010-04-20 13:23:14 +10:00
i915_gem_evict.c drm/i915: Implement fair lru eviction across both rings. (v2) 2010-08-09 11:24:32 -07:00
i915_gem_tiling.c drm/i915: Remove the WARN when failing to set tiling. 2010-08-01 19:03:46 -07:00
i915_gem.c drm/i915: Move the eviction logic to its own file. 2010-08-09 11:24:32 -07:00
i915_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
i915_irq.c drm/i915: Capture the overlay status upon a GPU hang. 2010-08-09 11:24:31 -07:00
i915_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
i915_opregion.c drm/i915: set DIDL using the ACPI video output device _ADR method return. 2010-04-18 17:05:13 -07:00
i915_reg.h drm/i915: Do not clobber the contents of TRANS_DP_CTL when enabling. 2010-08-09 11:24:28 -07:00
i915_suspend.c drm/i915: Add frame buffer compression support on Ironlake mobile 2010-08-01 19:03:44 -07: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_bios.c drm/i915: Honor sync polarity from VBT panel timing descriptors 2010-06-01 10:19:37 -07: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: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
intel_display.c drm/i915: Disable the cursor for DPMS_OFF 2010-08-09 11:24:30 -07:00
intel_dp.c drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
intel_drv.h drm/i915: Disable the cursor for DPMS_OFF 2010-08-09 11:24:30 -07:00
intel_dvo.c drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
intel_fb.c drm/i915: use new fb debug hooks 2010-08-05 09:22:31 -05:00
intel_hdmi.c drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
intel_i2c.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
intel_lvds.c drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
intel_modes.c Merge remote branch 'anholt/drm-intel-next' of /home/airlied/kernel/drm-next into drm-core-next 2010-04-20 13:11:45 +10:00
intel_overlay.c drm/i915: Capture the overlay status upon a GPU hang. 2010-08-09 11:24:31 -07:00
intel_ringbuffer.c drm/i915: Use a common seqno for all rings. 2010-08-09 11:24:32 -07:00
intel_ringbuffer.h drm/i915: Use a common seqno for all rings. 2010-08-09 11:24:32 -07: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: Add dot crawl property 2010-08-09 11:24:29 -07:00
intel_tv.c drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
Makefile drm/i915: Move the eviction logic to its own file. 2010-08-09 11:24:32 -07:00