[Intel-gfx] [PATCH v5 5/9] drm/i915: Move intel_init_clock_gating() to i915_gem_init()

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Nov 8 19:27:41 UTC 2017


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 at chris-wilson.co.uk>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> ---
>  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


More information about the Intel-gfx mailing list