forked from Minki/linux
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: Chris 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: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20171110142634.10551-4-chris@chris-wilson.co.uk
This commit is contained in:
parent
f58d13d571
commit
cc6a818ad6
@ -5024,6 +5024,21 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
|
|||||||
intel_init_gt_powersave(dev_priv);
|
intel_init_gt_powersave(dev_priv);
|
||||||
|
|
||||||
ret = i915_gem_init_hw(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) {
|
if (ret == -EIO) {
|
||||||
/* Allow engine initialisation to fail by marking the GPU as
|
/* Allow engine initialisation to fail by marking the GPU as
|
||||||
* wedged. But we only want to do this where the GPU is angry,
|
* 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;
|
ret = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
out_unlock:
|
|
||||||
intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
|
intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
|
||||||
mutex_unlock(&dev_priv->drm.struct_mutex);
|
mutex_unlock(&dev_priv->drm.struct_mutex);
|
||||||
|
|
||||||
|
@ -15198,8 +15198,6 @@ void intel_modeset_gem_init(struct drm_device *dev)
|
|||||||
{
|
{
|
||||||
struct drm_i915_private *dev_priv = to_i915(dev);
|
struct drm_i915_private *dev_priv = to_i915(dev);
|
||||||
|
|
||||||
intel_init_clock_gating(dev_priv);
|
|
||||||
|
|
||||||
intel_setup_overlay(dev_priv);
|
intel_setup_overlay(dev_priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user