Commit 78be2c30 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Move i915_gem_init_contexts() earlier

As the GEM global context setup is now independent of the GT state
(although GT does currently still depend upon the global
i915->kernel_context), we can move its init earlier, leaving the gt init
ready to be extracted.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Andi Shyti <andi.shyti@intel.com>
Reviewed-by: default avatarAndi Shyti <andi.shyti@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191221200109.1202310-1-chris@chris-wilson.co.uk
parent 4856254d
...@@ -1284,18 +1284,17 @@ int i915_gem_init(struct drm_i915_private *dev_priv) ...@@ -1284,18 +1284,17 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
} }
intel_gt_init(&dev_priv->gt); intel_gt_init(&dev_priv->gt);
i915_gem_init__contexts(dev_priv);
ret = intel_engines_setup(&dev_priv->gt); ret = intel_engines_setup(&dev_priv->gt);
if (ret) { if (ret) {
GEM_BUG_ON(ret == -EIO); GEM_BUG_ON(ret == -EIO);
goto err_unlock; goto err_gt_early;
} }
ret = intel_engines_init(&dev_priv->gt); ret = intel_engines_init(&dev_priv->gt);
if (ret) { if (ret) {
GEM_BUG_ON(ret == -EIO); GEM_BUG_ON(ret == -EIO);
goto err_scratch; goto err_engines;
} }
intel_uc_init(&dev_priv->gt.uc); intel_uc_init(&dev_priv->gt.uc);
...@@ -1322,19 +1321,19 @@ int i915_gem_init(struct drm_i915_private *dev_priv) ...@@ -1322,19 +1321,19 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
ret = intel_engines_verify_workarounds(&dev_priv->gt); ret = intel_engines_verify_workarounds(&dev_priv->gt);
if (ret) if (ret)
goto err_gt; goto err_gt_late;
ret = __intel_engines_record_defaults(&dev_priv->gt); ret = __intel_engines_record_defaults(&dev_priv->gt);
if (ret) if (ret)
goto err_gt; goto err_gt_late;
ret = i915_inject_probe_error(dev_priv, -ENODEV); ret = i915_inject_probe_error(dev_priv, -ENODEV);
if (ret) if (ret)
goto err_gt; goto err_gt_late;
ret = i915_inject_probe_error(dev_priv, -EIO); ret = i915_inject_probe_error(dev_priv, -EIO);
if (ret) if (ret)
goto err_gt; goto err_gt_late;
intel_uncore_forcewake_put(&dev_priv->uncore, FORCEWAKE_ALL); intel_uncore_forcewake_put(&dev_priv->uncore, FORCEWAKE_ALL);
...@@ -1346,7 +1345,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv) ...@@ -1346,7 +1345,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
* HW as irrevisibly wedged, but keep enough state around that the * HW as irrevisibly wedged, but keep enough state around that the
* driver doesn't explode during runtime. * driver doesn't explode during runtime.
*/ */
err_gt: err_gt_late:
intel_gt_set_wedged_on_init(&dev_priv->gt); intel_gt_set_wedged_on_init(&dev_priv->gt);
i915_gem_suspend(dev_priv); i915_gem_suspend(dev_priv);
i915_gem_suspend_late(dev_priv); i915_gem_suspend_late(dev_priv);
...@@ -1355,11 +1354,12 @@ int i915_gem_init(struct drm_i915_private *dev_priv) ...@@ -1355,11 +1354,12 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
err_init_hw: err_init_hw:
intel_uc_fini_hw(&dev_priv->gt.uc); intel_uc_fini_hw(&dev_priv->gt.uc);
err_uc_init: err_uc_init:
if (ret != -EIO) { if (ret != -EIO)
intel_uc_fini(&dev_priv->gt.uc); intel_uc_fini(&dev_priv->gt.uc);
err_engines:
if (ret != -EIO)
intel_engines_cleanup(&dev_priv->gt); intel_engines_cleanup(&dev_priv->gt);
} err_gt_early:
err_scratch:
intel_gt_driver_release(&dev_priv->gt); intel_gt_driver_release(&dev_priv->gt);
err_unlock: err_unlock:
intel_uncore_forcewake_put(&dev_priv->uncore, FORCEWAKE_ALL); intel_uncore_forcewake_put(&dev_priv->uncore, FORCEWAKE_ALL);
...@@ -1452,6 +1452,7 @@ static void i915_gem_init__mm(struct drm_i915_private *i915) ...@@ -1452,6 +1452,7 @@ static void i915_gem_init__mm(struct drm_i915_private *i915)
void i915_gem_init_early(struct drm_i915_private *dev_priv) void i915_gem_init_early(struct drm_i915_private *dev_priv)
{ {
i915_gem_init__mm(dev_priv); i915_gem_init__mm(dev_priv);
i915_gem_init__contexts(dev_priv);
spin_lock_init(&dev_priv->fb_tracking.lock); spin_lock_init(&dev_priv->fb_tracking.lock);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment