As the GEM global context setup is now independent of the GT state
(although GT does currently still depending upon the global
i915->kernel_context), we can move its init earlier, leaving the gt init
ready to extracted.

Signed-off-by: Chris Wilson <[email protected]>
---
 drivers/gpu/drm/i915/gem/i915_gem_context.c |  2 +-
 drivers/gpu/drm/i915/gem/i915_gem_context.h |  2 +-
 drivers/gpu/drm/i915/i915_gem.c             | 23 +++++++++++----------
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c 
b/drivers/gpu/drm/i915/gem/i915_gem_context.c
index eb0a806a3ffb..6a6ac9e27747 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
@@ -682,7 +682,7 @@ static void init_contexts(struct i915_gem_contexts *gc)
        init_llist_head(&gc->free_list);
 }
 
-void i915_gem_init_contexts(struct drm_i915_private *i915)
+void i915_gem_init__contexts(struct drm_i915_private *i915)
 {
        init_contexts(&i915->gem.contexts);
        DRM_DEBUG_DRIVER("%s context support initialized\n",
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.h 
b/drivers/gpu/drm/i915/gem/i915_gem_context.h
index d99fff481d59..80a90ead4108 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_context.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_context.h
@@ -115,7 +115,7 @@ static inline bool i915_gem_context_is_kernel(struct 
i915_gem_context *ctx)
 }
 
 /* i915_gem_context.c */
-void i915_gem_init_contexts(struct drm_i915_private *i915);
+void i915_gem_init__contexts(struct drm_i915_private *i915);
 
 int i915_gem_context_open(struct drm_i915_private *i915,
                          struct drm_file *file);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index b24825c691f7..04350e61c86c 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1216,18 +1216,17 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
        }
 
        intel_gt_init(&dev_priv->gt);
-       i915_gem_init_contexts(dev_priv);
 
        ret = intel_engines_setup(&dev_priv->gt);
        if (ret) {
                GEM_BUG_ON(ret == -EIO);
-               goto err_unlock;
+               goto err_gt_early;
        }
 
        ret = intel_engines_init(&dev_priv->gt);
        if (ret) {
                GEM_BUG_ON(ret == -EIO);
-               goto err_scratch;
+               goto err_engines;
        }
 
        intel_uc_init(&dev_priv->gt.uc);
@@ -1254,19 +1253,19 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
 
        ret = intel_engines_verify_workarounds(&dev_priv->gt);
        if (ret)
-               goto err_gt;
+               goto err_gt_late;
 
        ret = __intel_engines_record_defaults(&dev_priv->gt);
        if (ret)
-               goto err_gt;
+               goto err_gt_late;
 
        ret = i915_inject_probe_error(dev_priv, -ENODEV);
        if (ret)
-               goto err_gt;
+               goto err_gt_late;
 
        ret = i915_inject_probe_error(dev_priv, -EIO);
        if (ret)
-               goto err_gt;
+               goto err_gt_late;
 
        intel_uncore_forcewake_put(&dev_priv->uncore, FORCEWAKE_ALL);
 
@@ -1278,7 +1277,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
         * HW as irrevisibly wedged, but keep enough state around that the
         * driver doesn't explode during runtime.
         */
-err_gt:
+err_gt_late:
        intel_gt_set_wedged_on_init(&dev_priv->gt);
        i915_gem_suspend(dev_priv);
        i915_gem_suspend_late(dev_priv);
@@ -1287,11 +1286,12 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
 err_init_hw:
        intel_uc_fini_hw(&dev_priv->gt.uc);
 err_uc_init:
-       if (ret != -EIO) {
+       if (ret != -EIO)
                intel_uc_fini(&dev_priv->gt.uc);
+err_engines:
+       if (ret != -EIO)
                intel_engines_cleanup(&dev_priv->gt);
-       }
-err_scratch:
+err_gt_early:
        intel_gt_driver_release(&dev_priv->gt);
 err_unlock:
        intel_uncore_forcewake_put(&dev_priv->uncore, FORCEWAKE_ALL);
@@ -1382,6 +1382,7 @@ static void i915_gem_init__mm(struct drm_i915_private 
*i915)
 void i915_gem_init_early(struct drm_i915_private *dev_priv)
 {
        i915_gem_init__mm(dev_priv);
+       i915_gem_init__contexts(dev_priv);
 
        spin_lock_init(&dev_priv->fb_tracking.lock);
 }
-- 
2.24.0

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to