aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_ringbuffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 33faad3197fe..6a8f27d0a742 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -387,8 +387,18 @@ static void intel_ring_setup_status_page(struct intel_engine_cs *engine)
387 mmio = RING_HWS_PGA(engine->mmio_base); 387 mmio = RING_HWS_PGA(engine->mmio_base);
388 } 388 }
389 389
390 if (INTEL_GEN(dev_priv) >= 6) 390 if (INTEL_GEN(dev_priv) >= 6) {
391 I915_WRITE(RING_HWSTAM(engine->mmio_base), 0xffffffff); 391 u32 mask = ~0u;
392
393 /*
394 * Keep the render interrupt unmasked as this papers over
395 * lost interrupts following a reset.
396 */
397 if (engine->id == RCS)
398 mask &= ~BIT(0);
399
400 I915_WRITE(RING_HWSTAM(engine->mmio_base), mask);
401 }
392 402
393 I915_WRITE(mmio, engine->status_page.ggtt_offset); 403 I915_WRITE(mmio, engine->status_page.ggtt_offset);
394 POSTING_READ(mmio); 404 POSTING_READ(mmio);