drm/i915: Remove the vma from the drm_mm if binding fails
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 27 Feb 2017 12:26:54 +0000 (12:26 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 27 Feb 2017 13:10:12 +0000 (13:10 +0000)
commit31c7effa39f21f0fea1b3250ae9ff32b9c7e1ae5
tree9dcb87898cd066daba367247e9a1018e622818b1
parent2f7399af94a2d6f6459373969d266708e6a7fc38
drm/i915: Remove the vma from the drm_mm if binding fails

As we track whether a vma has been inserted into the drm_mm using the
vma->flags, if we fail to bind the vma into the GTT we do not update
those bits and will attempt to reinsert the vma into the drm_mm on
future passes. To prevent that, we want to unwind i915_vma_insert() if
we fail in our attempt to bind.

Fixes: 59bfa1248e22 ("drm/i915: Start passing around i915_vma from execbuffer")
Testcase: igt/drv_selftest/live_gtt
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: <stable@vger.kernel.org> # v4.9+
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170227122654.27651-3-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_vma.c