linux/drivers/gpu/drm/ttm
Maarten Lankhorst e7ab20197b drm/ttm: cope with reserved buffers on lru list in ttm_mem_evict_first, v2
Replace the goto loop with a simple for each loop, and only run the
delayed destroy cleanup if we can reserve the buffer first.

No race occurs, since lru lock is never dropped any more. An empty list
and a list full of unreservable buffers both cause -EBUSY to be returned,
which is identical to the previous situation, because previously buffers
on the lru list were always guaranteed to be reservable.

This should work since currently ttm guarantees items on the lru are
always reservable, and reserving items blockingly with some bo held
are enough to cause you to run into a deadlock.

Currently this is not a concern since removal off the lru list and
reservations are always done with atomically, but when this guarantee
no longer holds, we have to handle this situation or end up with
possible deadlocks.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-12-10 20:21:22 +10:00
..
Makefile drm/ttm: provide dma aware ttm page pool code V9 2011-12-06 10:39:33 +00:00
ttm_agp_backend.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
ttm_bo.c drm/ttm: cope with reserved buffers on lru list in ttm_mem_evict_first, v2 2012-12-10 20:21:22 +10:00
ttm_bo_manager.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
ttm_bo_util.c drm/ttm: remove sync_obj_arg from ttm_bo_move_accel_cleanup 2012-11-20 16:10:02 +10:00
ttm_bo_vm.c drm/ttm: Optimize vm locking using kref_get_unless_zero v3 2012-11-28 18:37:59 +10:00
ttm_execbuf_util.c drm/ttm: change fence_lock to inner lock 2012-12-10 20:09:58 +10:00
ttm_lock.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
ttm_memory.c drm/ttm: remove ttm_mem_global->queue 2012-11-20 16:06:22 +10:00
ttm_module.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
ttm_object.c drm/ttm: Use the hashtab _rcu interface for ttm_objects 2012-11-28 18:36:15 +10:00
ttm_page_alloc.c ttm: Clear the ttm page allocated from high memory zone correctly 2012-11-16 09:56:35 +10:00
ttm_page_alloc_dma.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
ttm_tt.c drm/ttm: remove unneeded preempt_disable/enable 2012-11-16 09:59:51 +10:00