drm/i915: Assert we do not attempt to reuse an allocated node
authorChris Wilson <chris@chris-wilson.co.uk>
Sun, 15 Jan 2017 17:27:40 +0000 (17:27 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 16 Jan 2017 12:21:20 +0000 (12:21 +0000)
i915_gem_gtt_reserve() and i915_gem_gtt_insert() can only work on
unallocated nodes. Check that the callers complies.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20170115172740.28995-1-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
drivers/gpu/drm/i915/i915_gem_gtt.c

index 7862291..64f241b 100644 (file)
@@ -3627,6 +3627,7 @@ int i915_gem_gtt_reserve(struct i915_address_space *vm,
        GEM_BUG_ON(!IS_ALIGNED(offset, I915_GTT_MIN_ALIGNMENT));
        GEM_BUG_ON(range_overflows(offset, size, vm->total));
        GEM_BUG_ON(vm == &vm->i915->mm.aliasing_ppgtt->base);
+       GEM_BUG_ON(drm_mm_node_allocated(node));
 
        node->size = size;
        node->start = offset;
@@ -3720,6 +3721,7 @@ int i915_gem_gtt_insert(struct i915_address_space *vm,
        GEM_BUG_ON(start > 0  && !IS_ALIGNED(start, I915_GTT_PAGE_SIZE));
        GEM_BUG_ON(end < U64_MAX && !IS_ALIGNED(end, I915_GTT_PAGE_SIZE));
        GEM_BUG_ON(vm == &vm->i915->mm.aliasing_ppgtt->base);
+       GEM_BUG_ON(drm_mm_node_allocated(node));
 
        if (unlikely(range_overflows(start, size, end)))
                return -ENOSPC;