[Intel-gfx] [3.0-rc3] i1915: missed IRQ/stalls patch success

Daniel J Blueman daniel.blueman at gmail.com
Tue Jun 14 06:18:36 CEST 2011


Hi Eric,

The frequent ~1.5s pauses I hit with SNB hardware in the gnome3 UI (eg
whenever you hit the top-left of the screen to show all windows) are
nicely addressed by your recent wake patch [1] (ported to -rc3). Thus
I see no 'missed IRQ' kernel messages.

As this addresses a significant usability regression, are you happy to
add it to the 3.0-rc queue? I think it has very good value in -stable
also (assuming correctness). What do you think?

Thanks,
  Daniel

--- [1] http://lists.freedesktop.org/archives/intel-gfx/2011-June/010863.html

diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c
b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 95c4b14..d3ef07f 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -631,9 +631,11 @@ gen6_ring_get_irq(struct intel_ring_buffer *ring,
u32 gflag, u32 rflag)

 	spin_lock(&ring->irq_lock);
 	if (ring->irq_refcount++ == 0) {
+		gen6_gt_force_wake_get(dev_priv);
 		ring->irq_mask &= ~rflag;
 		I915_WRITE_IMR(ring, ring->irq_mask);
 		ironlake_enable_irq(dev_priv, gflag);
+		gen6_gt_force_wake_put(dev_priv);
 	}
 	spin_unlock(&ring->irq_lock);

@@ -648,9 +650,11 @@ gen6_ring_put_irq(struct intel_ring_buffer *ring,
u32 gflag, u32 rflag)

 	spin_lock(&ring->irq_lock);
 	if (--ring->irq_refcount == 0) {
+		gen6_gt_force_wake_get(dev_priv);
 		ring->irq_mask |= rflag;
 		I915_WRITE_IMR(ring, ring->irq_mask);
 		ironlake_disable_irq(dev_priv, gflag);
+		gen6_gt_force_wake_put(dev_priv);
 	}
 	spin_unlock(&ring->irq_lock);
 }
-- 
Daniel J Blueman



More information about the Intel-gfx mailing list