}
 }
 
-static bool
-discard_ggtt_vma(struct i915_vma *vma, const struct i915_ggtt_view *view)
+static void discard_ggtt_vma(struct i915_vma *vma)
 {
-       const struct i915_ggtt_view discard = {
-               .type = I915_GGTT_VIEW_PARTIAL,
-       };
        struct drm_i915_gem_object *obj = vma->obj;
 
        spin_lock(&obj->vma.lock);
-       if (i915_vma_compare(vma, vma->vm, &discard)) {
-               struct rb_node *rb, **p;
-
+       if (!RB_EMPTY_NODE(&vma->obj_node)) {
                rb_erase(&vma->obj_node, &obj->vma.tree);
-               vma->ggtt_view = discard;
-               GEM_BUG_ON(i915_vma_compare(vma, vma->vm, &discard));
-               GEM_BUG_ON(i915_vma_compare(vma, vma->vm, view) == 0);
-
-               rb = NULL;
-               p = &obj->vma.tree.rb_node;
-               while (*p) {
-                       struct i915_vma *pos;
-                       long cmp;
-
-                       rb = *p;
-                       pos = rb_entry(rb, struct i915_vma, obj_node);
-
-                       cmp = i915_vma_compare(pos, vma->vm, &discard);
-                       if (cmp < 0)
-                               p = &rb->rb_right;
-                       else
-                               p = &rb->rb_left;
-               }
-               rb_link_node(&vma->obj_node, rb, p);
-               rb_insert_color(&vma->obj_node, &obj->vma.tree);
+               RB_CLEAR_NODE(&vma->obj_node);
        }
        spin_unlock(&obj->vma.lock);
-
-       return i915_vma_compare(vma, vma->vm, view);
 }
 
 struct i915_vma *
                }
 
                if (i915_vma_is_pinned(vma) || i915_vma_is_active(vma)) {
-                       if (discard_ggtt_vma(vma, view))
-                               goto new_vma;
+                       discard_ggtt_vma(vma);
+                       goto new_vma;
                }
 
                ret = i915_vma_unbind(vma);
 
 
                spin_lock(&obj->vma.lock);
                list_del(&vma->obj_link);
-               rb_erase(&vma->obj_node, &obj->vma.tree);
+               if (!RB_EMPTY_NODE(&vma->obj_node))
+                       rb_erase(&vma->obj_node, &obj->vma.tree);
                spin_unlock(&obj->vma.lock);
        }