drm/i915: Fix CPU-spinning hangs related to fence usage by using an LRU.
authorEric Anholt <eric@anholt.net>
Sat, 29 Aug 2009 19:49:51 +0000 (12:49 -0700)
committerEric Anholt <eric@anholt.net>
Sun, 30 Aug 2009 00:37:21 +0000 (17:37 -0700)
commita09ba7faf75fa4b21980d81de8e5f3d5c0785ccf
treedd0e468fa4a1a287fc365dc5b4ce546b68234377
parentf8aed700c6ec46ddade6570004ce25332283b306
drm/i915: Fix CPU-spinning hangs related to fence usage by using an LRU.

The lack of a proper LRU was partially worked around by taking the fence
from the object containing the oldest seqno.  But if there are multiple
objects inactive, then they don't have seqnos and the first fence reg
among them would be chosen.  If you were trying to copy data between two
mappings, this could result in each page fault stealing the fence from
the other argument, and your application hanging.

https://bugs.freedesktop.org/show_bug.cgi?id=23566
https://bugs.freedesktop.org/show_bug.cgi?id=23220
https://bugs.freedesktop.org/show_bug.cgi?id=23253
https://bugs.freedesktop.org/show_bug.cgi?id=23366

Cc: Stable Team <stable@kernel.org>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c