On Wed, Nov 08, 2017 at 07:14:58PM +0000, Chris Wilson wrote: > 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@xxxxxxxxxxxxxxxxxx> > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > --- > 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); This part lgtm. > + > +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: Is the movement of the label going to adversely affect error handling for the other functions which already use the label? Or none of them can return -EIO? > 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 -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx