]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915: Remove i915_gem_context_create_gvt()
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 9 Aug 2019 18:25:15 +0000 (19:25 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 9 Aug 2019 19:18:30 +0000 (20:18 +0100)
As we are phasing out using the GEM context for internal clients that
need to manipulate logical context state directly, remove the
constructor for the GVT context. We are not using it for anything other
than default setup and allocation of an i915_ppgtt.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190809182518.20486-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/i915_gem_context.c
drivers/gpu/drm/i915/gem/i915_gem_context.h
drivers/gpu/drm/i915/gvt/scheduler.c

index b407baaf0014237af5dfcfdb607522b15ea6d5af..afd994391ad77ecb2739bbfe416ebbd7c45f1ff0 100644 (file)
@@ -529,53 +529,6 @@ i915_gem_create_context(struct drm_i915_private *dev_priv, unsigned int flags)
        return ctx;
 }
 
-/**
- * i915_gem_context_create_gvt - create a GVT GEM context
- * @dev: drm device *
- *
- * This function is used to create a GVT specific GEM context.
- *
- * Returns:
- * pointer to i915_gem_context on success, error pointer if failed
- *
- */
-struct i915_gem_context *
-i915_gem_context_create_gvt(struct drm_device *dev)
-{
-       struct i915_gem_context *ctx;
-       int ret;
-
-       if (!IS_ENABLED(CONFIG_DRM_I915_GVT))
-               return ERR_PTR(-ENODEV);
-
-       ret = i915_mutex_lock_interruptible(dev);
-       if (ret)
-               return ERR_PTR(ret);
-
-       ctx = i915_gem_create_context(to_i915(dev), 0);
-       if (IS_ERR(ctx))
-               goto out;
-
-       ret = i915_gem_context_pin_hw_id(ctx);
-       if (ret) {
-               context_close(ctx);
-               ctx = ERR_PTR(ret);
-               goto out;
-       }
-
-       ctx->file_priv = ERR_PTR(-EBADF);
-       i915_gem_context_set_closed(ctx); /* not user accessible */
-       i915_gem_context_clear_bannable(ctx);
-       i915_gem_context_set_force_single_submission(ctx);
-       if (!USES_GUC_SUBMISSION(to_i915(dev)))
-               ctx->ring_size = 512 * PAGE_SIZE; /* Max ring buffer size */
-
-       GEM_BUG_ON(i915_gem_context_is_kernel(ctx));
-out:
-       mutex_unlock(&dev->struct_mutex);
-       return ctx;
-}
-
 static void
 destroy_kernel_context(struct i915_gem_context **ctxp)
 {
index 106e2ccf7a4c568b0650aaa628402933b281e15a..176978608b6fe93e06c79ae4d365bb6e78ff8008 100644 (file)
@@ -141,8 +141,6 @@ int i915_gem_context_open(struct drm_i915_private *i915,
 void i915_gem_context_close(struct drm_file *file);
 
 void i915_gem_context_release(struct kref *ctx_ref);
-struct i915_gem_context *
-i915_gem_context_create_gvt(struct drm_device *dev);
 
 int i915_gem_vm_create_ioctl(struct drm_device *dev, void *data,
                             struct drm_file *file);
index 0a0a17bea540ce098a59fa3a28d99fa7649f8732..4cb3c71327fe202e534444de04e9280f1badee3b 100644 (file)
@@ -1211,19 +1211,28 @@ i915_context_ppgtt_root_save(struct intel_vgpu_submission *s,
  */
 int intel_vgpu_setup_submission(struct intel_vgpu *vgpu)
 {
+       struct drm_i915_private *i915 = vgpu->gvt->dev_priv;
        struct intel_vgpu_submission *s = &vgpu->submission;
        struct intel_engine_cs *engine;
        struct i915_gem_context *ctx;
        enum intel_engine_id i;
        int ret;
 
-       ctx = i915_gem_context_create_gvt(&vgpu->gvt->dev_priv->drm);
-       if (IS_ERR(ctx))
-               return PTR_ERR(ctx);
+       mutex_lock(&i915->drm.struct_mutex);
+
+       ctx = i915_gem_context_create_kernel(i915, I915_PRIORITY_MAX);
+       if (IS_ERR(ctx)) {
+               ret = PTR_ERR(ctx);
+               goto out_unlock;
+       }
+
+       i915_gem_context_set_force_single_submission(ctx);
+       if (!USES_GUC_SUBMISSION(i915))
+               ctx->ring_size = 512 * PAGE_SIZE; /* Max ring buffer size */
 
        i915_context_ppgtt_root_save(s, i915_vm_to_ppgtt(ctx->vm));
 
-       for_each_engine(engine, vgpu->gvt->dev_priv, i) {
+       for_each_engine(engine, i915, i) {
                struct intel_context *ce;
 
                INIT_LIST_HEAD(&s->workload_q_head[i]);
@@ -1261,11 +1270,12 @@ int intel_vgpu_setup_submission(struct intel_vgpu *vgpu)
        bitmap_zero(s->tlb_handle_pending, I915_NUM_ENGINES);
 
        i915_gem_context_put(ctx);
+       mutex_unlock(&i915->drm.struct_mutex);
        return 0;
 
 out_shadow_ctx:
        i915_context_ppgtt_root_restore(s, i915_vm_to_ppgtt(ctx->vm));
-       for_each_engine(engine, vgpu->gvt->dev_priv, i) {
+       for_each_engine(engine, i915, i) {
                if (IS_ERR(s->shadow[i]))
                        break;
 
@@ -1273,6 +1283,8 @@ out_shadow_ctx:
                intel_context_put(s->shadow[i]);
        }
        i915_gem_context_put(ctx);
+out_unlock:
+       mutex_unlock(&i915->drm.struct_mutex);
        return ret;
 }