aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_pm.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2016-05-23 10:42:48 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-07-29 15:16:15 -0400
commita7b4667a00025ac28300737c868bd4818b6d8c4d (patch)
treea8f19d6c699e2a1e1e82143f83a05bde65e2cd72 /drivers/gpu/drm/i915/intel_pm.c
parent3b2c1710fac7fb278b760d1545e637cbb5ea5b5b (diff)
drm/i915: Never fully mask the the EI up rps interrupt on SNB/IVB
SNB (and IVB too I suppose) starts to misbehave if the GPU gets stuck in an infinite batch buffer loop. The GPU apparently hogs something critical and CPUs start to lose interrupts and whatnot. We can keep the system limping along by unmasking some interrupts in GEN6_PMINTRMSK. The EI up interrupt has been previously chosen for that task, so let's never mask it. v2: s/gen6_rps_pm_mask/gen6_sanitize_rps_pm_mask/ (Chris) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93122 Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Link: http://patchwork.freedesktop.org/patch/msgid/1464014568-4529-1-git-send-email-ville.syrjala@linux.intel.com Cc: stable@vger.kernel.org (cherry picked from commit 12c100bfa5d9103b6c4d43636fee09c31e75605a) Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 5a8ee0c76593..5ca68d2ed7d4 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -4892,7 +4892,8 @@ void gen6_rps_idle(struct drm_i915_private *dev_priv)
4892 else 4892 else
4893 gen6_set_rps(dev_priv, dev_priv->rps.idle_freq); 4893 gen6_set_rps(dev_priv, dev_priv->rps.idle_freq);
4894 dev_priv->rps.last_adj = 0; 4894 dev_priv->rps.last_adj = 0;
4895 I915_WRITE(GEN6_PMINTRMSK, 0xffffffff); 4895 I915_WRITE(GEN6_PMINTRMSK,
4896 gen6_sanitize_rps_pm_mask(dev_priv, ~0));
4896 } 4897 }
4897 mutex_unlock(&dev_priv->rps.hw_lock); 4898 mutex_unlock(&dev_priv->rps.hw_lock);
4898 4899