diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 14 |
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); |