drm/i915: Remove i915_vma_create from VMA API
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 16 Jan 2017 15:21:30 +0000 (15:21 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 19 Jan 2017 10:17:39 +0000 (10:17 +0000)
With the introduce of i915_vma_instance() for obtaining the VMA
singleton for a (obj, vm, view) tuple, we can remove the
i915_vma_create() in favour of a single entry point. We do incur a
lookup onto an empty tree, but the i915_vma_create() were being called
infrequently and during initialisation, so the small overhead is
negligible.

v2: Drop the i915_ prefix from the now static vma_create() function

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170116152131.18089-4-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem_context.c
drivers/gpu/drm/i915/i915_gem_render_state.c
drivers/gpu/drm/i915/i915_guc_submission.c
drivers/gpu/drm/i915/i915_vma.c
drivers/gpu/drm/i915/i915_vma.h
drivers/gpu/drm/i915/intel_engine_cs.c
drivers/gpu/drm/i915/intel_lrc.c
drivers/gpu/drm/i915/intel_ringbuffer.c

index 0a4728fdecdc7408ab80dbeef98994ea7aa868a6..17f90c6182081c932652715ed34724f1c71b373d 100644 (file)
@@ -269,7 +269,7 @@ __create_hw_context(struct drm_i915_private *dev_priv,
                        goto err_out;
                }
 
-               vma = i915_vma_create(obj, &dev_priv->ggtt.base, NULL);
+               vma = i915_vma_instance(obj, &dev_priv->ggtt.base, NULL);
                if (IS_ERR(vma)) {
                        i915_gem_object_put(obj);
                        ret = PTR_ERR(vma);
index 63ae7e813335a41499aba8d7330dbc1fb274984c..b42c81b42487aabe43961770772219f6bf0e31f8 100644 (file)
@@ -200,7 +200,7 @@ int i915_gem_render_state_init(struct intel_engine_cs *engine)
                goto err_free;
        }
 
-       so->vma = i915_vma_create(obj, &engine->i915->ggtt.base, NULL);
+       so->vma = i915_vma_instance(obj, &engine->i915->ggtt.base, NULL);
        if (IS_ERR(so->vma)) {
                ret = PTR_ERR(so->vma);
                goto err_obj;
index c3277858cd8c0cf992021a857123d141eec16665..8ced9e26f0758d061bb1ab307a8a6f541cc7e3f6 100644 (file)
@@ -566,7 +566,7 @@ struct i915_vma *intel_guc_allocate_vma(struct intel_guc *guc, u32 size)
        if (IS_ERR(obj))
                return ERR_CAST(obj);
 
-       vma = i915_vma_create(obj, &dev_priv->ggtt.base, NULL);
+       vma = i915_vma_instance(obj, &dev_priv->ggtt.base, NULL);
        if (IS_ERR(vma))
                goto err;
 
index b4d7b51266d2337b0908075c6bca7866e83f1806..cb415bfe22d7ab99550a972a3d214d8c7cbcf3fe 100644 (file)
@@ -69,16 +69,14 @@ i915_vma_retire(struct i915_gem_active *active,
 }
 
 static struct i915_vma *
-__i915_vma_create(struct drm_i915_gem_object *obj,
-                 struct i915_address_space *vm,
-                 const struct i915_ggtt_view *view)
+vma_create(struct drm_i915_gem_object *obj,
+          struct i915_address_space *vm,
+          const struct i915_ggtt_view *view)
 {
        struct i915_vma *vma;
        struct rb_node *rb, **p;
        int i;
 
-       GEM_BUG_ON(vm->closed);
-
        vma = kmem_cache_zalloc(to_i915(obj->base.dev)->vmas, GFP_KERNEL);
        if (vma == NULL)
                return ERR_PTR(-ENOMEM);
@@ -186,31 +184,6 @@ i915_vma_lookup(struct drm_i915_gem_object *obj,
        return NULL;
 }
 
-/**
- * i915_vma_create - creates a VMA
- * @obj: parent &struct drm_i915_gem_object to be mapped
- * @vm: address space in which the mapping is located
- * @view: additional mapping requirements
- *
- * i915_vma_create() allocates a new VMA of the @obj in the @vm with
- * @view characteristics.
- *
- * Must be called with struct_mutex held.
- *
- * Returns the vma if found, or an error pointer.
- */
-struct i915_vma *
-i915_vma_create(struct drm_i915_gem_object *obj,
-               struct i915_address_space *vm,
-               const struct i915_ggtt_view *view)
-{
-       lockdep_assert_held(&obj->base.dev->struct_mutex);
-       GEM_BUG_ON(view && !i915_is_ggtt(vm));
-       GEM_BUG_ON(i915_vma_lookup(obj, vm, view));
-
-       return __i915_vma_create(obj, vm, view);
-}
-
 /**
  * i915_vma_instance - return the singleton instance of the VMA
  * @obj: parent &struct drm_i915_gem_object to be mapped
@@ -239,7 +212,7 @@ i915_vma_instance(struct drm_i915_gem_object *obj,
 
        vma = i915_vma_lookup(obj, vm, view);
        if (!vma)
-               vma = i915_vma_create(obj, vm, view);
+               vma = vma_create(obj, vm, view);
 
        GEM_BUG_ON(!IS_ERR(vma) && i915_vma_is_closed(vma));
        GEM_BUG_ON(!IS_ERR(vma) && i915_vma_compare(vma, vm, view));
index b3c81190b4a0ccd2cc943778c7a87addab3182a3..82a56193985ca7094af59a5c02f8e64a1b2bca90 100644 (file)
@@ -111,11 +111,6 @@ struct i915_vma {
        struct drm_i915_gem_exec_object2 *exec_entry;
 };
 
-struct i915_vma *
-i915_vma_create(struct drm_i915_gem_object *obj,
-               struct i915_address_space *vm,
-               const struct i915_ggtt_view *view);
-
 struct i915_vma *
 i915_vma_lookup(struct drm_i915_gem_object *obj,
                struct i915_address_space *vm,
index 97bbbc3d6aa8c3407ff76a60e498a723dd13a03d..371acf109e343295ae060c4cf49908bf5607118e 100644 (file)
@@ -264,7 +264,7 @@ int intel_engine_create_scratch(struct intel_engine_cs *engine, int size)
                return PTR_ERR(obj);
        }
 
-       vma = i915_vma_create(obj, &engine->i915->ggtt.base, NULL);
+       vma = i915_vma_instance(obj, &engine->i915->ggtt.base, NULL);
        if (IS_ERR(vma)) {
                ret = PTR_ERR(vma);
                goto err_unref;
index 8f8dcd9a9524c770aa557193c9e60f016277b71e..432ee495dec2288a33e47b893476fbaaf3d76a28 100644 (file)
@@ -1225,7 +1225,7 @@ static int lrc_setup_wa_ctx_obj(struct intel_engine_cs *engine, u32 size)
        if (IS_ERR(obj))
                return PTR_ERR(obj);
 
-       vma = i915_vma_create(obj, &engine->i915->ggtt.base, NULL);
+       vma = i915_vma_instance(obj, &engine->i915->ggtt.base, NULL);
        if (IS_ERR(vma)) {
                err = PTR_ERR(vma);
                goto err;
@@ -2198,7 +2198,7 @@ static int execlists_context_deferred_alloc(struct i915_gem_context *ctx,
                return PTR_ERR(ctx_obj);
        }
 
-       vma = i915_vma_create(ctx_obj, &ctx->i915->ggtt.base, NULL);
+       vma = i915_vma_instance(ctx_obj, &ctx->i915->ggtt.base, NULL);
        if (IS_ERR(vma)) {
                ret = PTR_ERR(vma);
                goto error_deref_obj;
index 49fa8006c6a2e88b7911dc49a9c9dc5f05eccd41..69035e4f9b3b76a06c4705c9429cbe44c2093ba3 100644 (file)
@@ -1738,7 +1738,7 @@ static int init_status_page(struct intel_engine_cs *engine)
        if (ret)
                goto err;
 
-       vma = i915_vma_create(obj, &engine->i915->ggtt.base, NULL);
+       vma = i915_vma_instance(obj, &engine->i915->ggtt.base, NULL);
        if (IS_ERR(vma)) {
                ret = PTR_ERR(vma);
                goto err;
@@ -1872,7 +1872,7 @@ intel_ring_create_vma(struct drm_i915_private *dev_priv, int size)
        /* mark ring buffers as read-only from GPU side by default */
        obj->gt_ro = 1;
 
-       vma = i915_vma_create(obj, &dev_priv->ggtt.base, NULL);
+       vma = i915_vma_instance(obj, &dev_priv->ggtt.base, NULL);
        if (IS_ERR(vma))
                goto err;
 
@@ -2462,7 +2462,7 @@ static void intel_ring_init_semaphores(struct drm_i915_private *dev_priv,
                if (IS_ERR(obj))
                        goto err;
 
-               vma = i915_vma_create(obj, &dev_priv->ggtt.base, NULL);
+               vma = i915_vma_instance(obj, &dev_priv->ggtt.base, NULL);
                if (IS_ERR(vma))
                        goto err_obj;