aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Kuoppala <mika.kuoppala@linux.intel.com>2017-04-13 07:15:27 -0400
committerJani Nikula <jani.nikula@intel.com>2017-04-26 09:28:28 -0400
commitacf2dc2266b99be9103b5c35acbb8f9fe923bf3d (patch)
tree0bf83b6e2b83930330b6092468d43126d2529883
parent5af9e672b84f006695b820f791f2eceecca59bbc (diff)
drm/i915: Fix system hang with EI UP masked on Haswell
Previously with commit a9c1f90c8e17 ("drm/i915: Don't mask EI UP interrupt on IVB|SNB") certain, seemingly unrelated bit (GEN6_PM_RP_UP_EI_EXPIRED) was needed to be unmasked for IVB and SNB in order to prevent system hang with chained batchbuffers. Our CI was seeing incomplete results with tests that used chained batches and it was found out that HSW needs to have this same bit unmasked to reliably survive chained batches. Always unmask GEN6_PM_RP_UP_EI_EXPIRED on Haswell to prevent system hang with batch chaining. Testcase: igt/gem_exec_fence/nb-await-default Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100672 Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@vger.kernel.org Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk> Link: http://patchwork.freedesktop.org/patch/msgid/1492082127-29007-1-git-send-email-mika.kuoppala@intel.com (cherry picked from commit 3396a273851c14634b98bb27be37508b06df94f4) Signed-off-by: Jani Nikula <jani.nikula@intel.com>
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index d9d196977f4a..fd97fe00cd0d 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -4252,12 +4252,12 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
4252 dev_priv->rps.pm_intrmsk_mbz = 0; 4252 dev_priv->rps.pm_intrmsk_mbz = 0;
4253 4253
4254 /* 4254 /*
4255 * SNB,IVB can while VLV,CHV may hard hang on looping batchbuffer 4255 * SNB,IVB,HSW can while VLV,CHV may hard hang on looping batchbuffer
4256 * if GEN6_PM_UP_EI_EXPIRED is masked. 4256 * if GEN6_PM_UP_EI_EXPIRED is masked.
4257 * 4257 *
4258 * TODO: verify if this can be reproduced on VLV,CHV. 4258 * TODO: verify if this can be reproduced on VLV,CHV.
4259 */ 4259 */
4260 if (INTEL_INFO(dev_priv)->gen <= 7 && !IS_HASWELL(dev_priv)) 4260 if (INTEL_INFO(dev_priv)->gen <= 7)
4261 dev_priv->rps.pm_intrmsk_mbz |= GEN6_PM_RP_UP_EI_EXPIRED; 4261 dev_priv->rps.pm_intrmsk_mbz |= GEN6_PM_RP_UP_EI_EXPIRED;
4262 4262
4263 if (INTEL_INFO(dev_priv)->gen >= 8) 4263 if (INTEL_INFO(dev_priv)->gen >= 8)