Despite its name intel_init_clock_gating applies both display clock gating
workarounds; GT mmio workarounds and the occasional GT power context
workaround. Worse, sometimes it includes a context register workaround
which we need to apply before we record the default HW state for all
contexts.

Signed-off-by: Chris Wilson <[email protected]>
Cc: Ville Syrjälä <[email protected]>
Cc: Joonas Lahtinen <[email protected]>
---
 drivers/gpu/drm/i915/i915_gem.c      | 16 ++++++++++++++--
 drivers/gpu/drm/i915/intel_display.c |  2 --
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 37586f703c1e..5c0fc78de853 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -5024,6 +5024,20 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
        intel_init_gt_powersave(dev_priv);
 
        ret = i915_gem_init_hw(dev_priv);
+       if (ret)
+               goto out_unlock;
+
+       /* Despite its name intel_init_clock_gating applies both display
+        * clock gating workarounds; GT mmio workarounds and the occasional
+        * GT power context workaround. Worse, sometimes it includes a context
+        * register workaround which we need to apply before we record the
+        * default HW state for all contexts.
+        *
+        * FIXME: break up the workarounds and apply them at the right time!
+        */
+       intel_init_clock_gating(dev_priv);
+
+out_unlock:
        if (ret == -EIO) {
                /* Allow engine initialisation to fail by marking the GPU as
                 * wedged. But we only want to do this where the GPU is angry,
@@ -5035,8 +5049,6 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
                }
                ret = 0;
        }
-
-out_unlock:
        intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
        mutex_unlock(&dev_priv->drm.struct_mutex);
 
diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index bc1c6ccde7db..618e912fcaec 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -15197,8 +15197,6 @@ void intel_modeset_gem_init(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = to_i915(dev);
 
-       intel_init_clock_gating(dev_priv);
-
        intel_setup_overlay(dev_priv);
 }
 
-- 
2.15.0

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

Reply via email to