drm/i915: Assert that we have allocated the drm_mm_node upon pinning
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 11 Jan 2017 21:09:26 +0000 (21:09 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 13 Jan 2017 16:35:27 +0000 (16:35 +0000)
We currently check after the slow path that the vma is bound correctly,
but we don't currently check after the fast path. This is important in
case we accidentally take the fast path and leave the vma misplaced.

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

index b74eeb73ae413cc386616d6cb976aef5a5c8de51..379364b8fef9337617560f3fdf9987c27473be1d 100644 (file)
@@ -476,6 +476,7 @@ int __i915_vma_do_pin(struct i915_vma *vma,
        if ((bound ^ vma->flags) & I915_VMA_GLOBAL_BIND)
                __i915_vma_set_map_and_fenceable(vma);
 
+       GEM_BUG_ON(!drm_mm_node_allocated(&vma->node));
        GEM_BUG_ON(i915_vma_misplaced(vma, size, alignment, flags));
        return 0;
 
index a969bbb65871d104258a116cf7bec90fec260da5..008cf115f38f91590fd7d42e78b5d00c78256a15 100644 (file)
@@ -232,8 +232,11 @@ i915_vma_pin(struct i915_vma *vma, u64 size, u64 alignment, u64 flags)
        /* Pin early to prevent the shrinker/eviction logic from destroying
         * our vma as we insert and bind.
         */
-       if (likely(((++vma->flags ^ flags) & I915_VMA_BIND_MASK) == 0))
+       if (likely(((++vma->flags ^ flags) & I915_VMA_BIND_MASK) == 0)) {
+               GEM_BUG_ON(!drm_mm_node_allocated(&vma->node));
+               GEM_BUG_ON(i915_vma_misplaced(vma, size, alignment, flags));
                return 0;
+       }
 
        return __i915_vma_do_pin(vma, size, alignment, flags);
 }