drm/i915: don't trash the gtt when running out of fences
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 14 Dec 2011 12:57:09 +0000 (13:57 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 29 Jan 2012 17:24:10 +0000 (18:24 +0100)
With the fence accounting fixed up in the previous commit not finding
enough fences is a fatal error and userspace bug. Trashing the entire
gtt is not gonna turn up that missing fence, so don't to this by
returning another error thatn ENOSPC.

This has the added benefit that it's easier to distinguish fence
accounting errors from gtt space accounting issues.

TTM serves as precendence for the EDEADLK error code - it returns it
when the reservation code needs resources already blocked by the
current reservation.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem.c

index c78930ed2e807d15309b9bcc87188826242fb4cb..721924150d0213393f1c4c8d72c4feb9604d092d 100644 (file)
@@ -2566,7 +2566,7 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
 
        reg = i915_find_fence_reg(dev, pipelined);
        if (reg == NULL)
-               return -ENOSPC;
+               return -EDEADLK;
 
        ret = i915_gem_object_flush_fence(obj, pipelined);
        if (ret)