drm/i915: Make the RPS interrupt generation mask handle the vlv wa
We can eliminate a lot of special case code by making the computation of the interrupt mask be correct for all callers. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
bf225f20d5
commit
7b3c29f6fd
|
@ -3183,6 +3183,9 @@ static u32 gen6_rps_pm_mask(struct drm_i915_private *dev_priv, u8 val)
|
||||||
if (val < dev_priv->rps.max_freq_softlimit)
|
if (val < dev_priv->rps.max_freq_softlimit)
|
||||||
mask |= GEN6_PM_RP_UP_THRESHOLD;
|
mask |= GEN6_PM_RP_UP_THRESHOLD;
|
||||||
|
|
||||||
|
mask |= dev_priv->pm_rps_events & (GEN6_PM_RP_DOWN_EI_EXPIRED | GEN6_PM_RP_UP_EI_EXPIRED);
|
||||||
|
mask &= dev_priv->pm_rps_events;
|
||||||
|
|
||||||
/* IVB and SNB hard hangs on looping batchbuffer
|
/* IVB and SNB hard hangs on looping batchbuffer
|
||||||
* if GEN6_PM_UP_EI_EXPIRED is masked.
|
* if GEN6_PM_UP_EI_EXPIRED is masked.
|
||||||
*/
|
*/
|
||||||
|
@ -3276,9 +3279,6 @@ static void vlv_set_rps_idle(struct drm_i915_private *dev_priv)
|
||||||
|
|
||||||
vlv_force_gfx_clock(dev_priv, false);
|
vlv_force_gfx_clock(dev_priv, false);
|
||||||
|
|
||||||
if (dev_priv->pm_rps_events & GEN6_PM_RP_UP_EI_EXPIRED)
|
|
||||||
I915_WRITE(GEN6_PMINTRMSK, ~dev_priv->pm_rps_events);
|
|
||||||
else
|
|
||||||
I915_WRITE(GEN6_PMINTRMSK,
|
I915_WRITE(GEN6_PMINTRMSK,
|
||||||
gen6_rps_pm_mask(dev_priv, dev_priv->rps.cur_freq));
|
gen6_rps_pm_mask(dev_priv, dev_priv->rps.cur_freq));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue