drm/i915: Remove the vm open count
[linux-2.6-microblaze.git] / drivers / gpu / drm / i915 / i915_gem.c
index 3d6c00f..dd84eba 100644 (file)
@@ -25,7 +25,6 @@
  *
  */
 
-#include <drm/drm_vma_manager.h>
 #include <linux/dma-fence-array.h>
 #include <linux/kthread.h>
 #include <linux/dma-resv.h>
@@ -37,6 +36,9 @@
 #include <linux/dma-buf.h>
 #include <linux/mman.h>
 
+#include <drm/drm_cache.h>
+#include <drm/drm_vma_manager.h>
+
 #include "display/intel_display.h"
 #include "display/intel_frontbuffer.h"
 
 #include "gem/i915_gem_context.h"
 #include "gem/i915_gem_ioctls.h"
 #include "gem/i915_gem_mman.h"
+#include "gem/i915_gem_pm.h"
 #include "gem/i915_gem_region.h"
+#include "gem/i915_gem_userptr.h"
 #include "gt/intel_engine_user.h"
 #include "gt/intel_gt.h"
 #include "gt/intel_gt_pm.h"
 #include "gt/intel_workarounds.h"
 
 #include "i915_drv.h"
+#include "i915_file_private.h"
 #include "i915_trace.h"
 #include "i915_vgpu.h"
-
 #include "intel_pm.h"
 
 static int
@@ -119,6 +123,8 @@ int i915_gem_object_unbind(struct drm_i915_gem_object *obj,
        struct i915_vma *vma;
        int ret;
 
+       assert_object_held(obj);
+
        if (list_empty(&obj->vma.list))
                return 0;
 
@@ -136,8 +142,6 @@ try_again:
        while (!ret && (vma = list_first_entry_or_null(&obj->vma.list,
                                                       struct i915_vma,
                                                       obj_link))) {
-               struct i915_address_space *vm = vma->vm;
-
                list_move_tail(&vma->obj_link, &still_in_list);
                if (!i915_vma_is_bound(vma, I915_VMA_BIND_MASK))
                        continue;
@@ -148,7 +152,7 @@ try_again:
                }
 
                ret = -EAGAIN;
-               if (!i915_vm_tryopen(vm))
+               if (!i915_vm_tryget(vma->vm))
                        break;
 
                /* Prevent vma being freed by i915_vma_parked as we unbind */
@@ -180,7 +184,7 @@ try_again:
                        __i915_vma_put(vma);
                }
 
-               i915_vm_close(vm);
+               i915_vm_put(vma->vm);
                spin_lock(&obj->vma.lock);
        }
        list_splice_init(&still_in_list, &obj->vma.list);