[PATCH 16/29] drm/i915: Cleanup more of VMA in destroy

Ben Widawsky
2013-08-01T00:00:45Z

Remove the VMA from the object's list, and remove the VMA's node from
the allocator. This just helps avoid duplication, since we always want
those two things to occur on destroy, and at least for now, we only do
those two actions on destroy anyway.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
---
drivers/gpu/drm/i915/i915_gem.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 8ce3545..4b669e8 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2640,8 +2640,6 @@ i915_gem_object_unbind(struct drm_i915_gem_object *obj)
obj->map_and_fenceable = true;

vma = i915_gem_obj_to_vma(obj, &dev_priv->gtt.base);
- list_del(&vma->vma_link);
- drm_mm_remove_node(&vma->node);
i915_gem_vma_destroy(vma);

/* Since the unbound list is global, only move to that list if
@@ -3176,7 +3174,6 @@ search_free:
return 0;

err_out:
- drm_mm_remove_node(&vma->node);
i915_gem_vma_destroy(vma);
i915_gem_object_unpin_pages(obj);
return ret;
@@ -4020,7 +4017,8 @@ struct i915_vma *i915_gem_vma_create(struct drm_i915_gem_object *obj,

void i915_gem_vma_destroy(struct i915_vma *vma)
{
- WARN_ON(vma->node.allocated);
+ list_del_init(&vma->vma_link);
+ drm_mm_remove_node(&vma->node);
kfree(vma);
}

--
1.8.3.4