[Intel-gfx] [PATCH 1/2] drm/i915: Fix VLV forcewake after reset

Daniel Vetter daniel at ffwll.ch
Wed Mar 5 15:00:19 CET 2014


On Mon, Feb 24, 2014 at 05:02:08PM +0200, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Use the render/media specific forcewake counts to properly restore the
> forcewake status after a GPU reset on VLV.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_uncore.c | 20 ++++++++++++++++----
>  1 file changed, 16 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index c628414..09fa555 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -967,10 +967,22 @@ static int gen6_do_reset(struct drm_device *dev)
>  	intel_uncore_forcewake_reset(dev);
>  
>  	/* If reset with a user forcewake, try to restore, otherwise turn it off */
> -	if (dev_priv->uncore.forcewake_count)
> -		dev_priv->uncore.funcs.force_wake_get(dev_priv, FORCEWAKE_ALL);
> -	else
> -		dev_priv->uncore.funcs.force_wake_put(dev_priv, FORCEWAKE_ALL);
> +	if (IS_VALLEYVIEW(dev)) {
> +		if (dev_priv->uncore.fw_rendercount)
> +			dev_priv->uncore.funcs.force_wake_get(dev_priv, FORCEWAKE_RENDER);
> +		else
> +			dev_priv->uncore.funcs.force_wake_put(dev_priv, FORCEWAKE_RENDER);
> +
> +		if (dev_priv->uncore.fw_mediacount)
> +			dev_priv->uncore.funcs.force_wake_get(dev_priv, FORCEWAKE_MEDIA);
> +		else
> +			dev_priv->uncore.funcs.force_wake_put(dev_priv, FORCEWAKE_MEDIA);
> +	} else {
> +		if (dev_priv->uncore.forcewake_count)
> +			dev_priv->uncore.funcs.force_wake_get(dev_priv, FORCEWAKE_ALL);
> +		else
> +			dev_priv->uncore.funcs.force_wake_put(dev_priv, FORCEWAKE_ALL);
> +	}

It starts to feel like we should subsume the forcewake stuff into our
power domain handling, and create a bunch of domains for this ...

But that's lots of work since we need to switch to a more explicit
forcewake power domain handling then I guess. Not sure whether that's
worth it.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list