Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc6a818a authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Move intel_init_clock_gating() to i915_gem_init()



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: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171110142634.10551-4-chris@chris-wilson.co.uk
parent f58d13d5
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -5024,6 +5024,21 @@ 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 +5050,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);

+0 −2
Original line number Diff line number Diff line
@@ -15198,8 +15198,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);
}