[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