drm/i915: Fix VLV forcewake after reset
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@linux.intel.com> Reviewed-by: Deepak S <deepak.s@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
f900db4758
commit
ee7fa12ce4
|
@ -982,10 +982,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);
|
||||
}
|
||||
|
||||
/* Restore fifo count */
|
||||
dev_priv->uncore.fifo_count = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
|
||||
|
|
Loading…
Reference in New Issue