Message ID | 1303975325-2156-2-git-send-email-boqun.feng@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 28 Apr 2011 15:22:05 +0800, "Feng, Boqun" <boqun.feng@intel.com> wrote: > This patch depends on patch "drm/i915:merge ring_put/get_irq into > bsd_ring_put/get_irq" I'm being a nuisance, but this is the wrong way around. This a bug fix and needs to apply cleanly on top of -fixes and marked for stable. The cleanup patch is something we can then do at our leisure and so goes in through next. -Chris
I got it. Thanks -Boqun -----Original Message----- From: Chris Wilson [mailto:chris@chris-wilson.co.uk] Sent: Thursday, April 28, 2011 4:03 PM To: Feng, Boqun; intel-gfx@lists.freedesktop.org Subject: Re: [Intel-gfx] [PATCH 2/2] drm/i915:fix irq miss in bsd ring for g4x v2 On Thu, 28 Apr 2011 15:22:05 +0800, "Feng, Boqun" <boqun.feng@intel.com> wrote: > This patch depends on patch "drm/i915:merge ring_put/get_irq into > bsd_ring_put/get_irq" I'm being a nuisance, but this is the wrong way around. This a bug fix and needs to apply cleanly on top of -fixes and marked for stable. The cleanup patch is something we can then do at our leisure and so goes in through next. -Chris
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index 06c921f..48c21aa 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -644,8 +644,12 @@ bsd_ring_get_irq(struct intel_ring_buffer *ring) return false; spin_lock(&ring->irq_lock); - if (ring->irq_refcount++ == 0) - ironlake_enable_irq(dev_priv, GT_BSD_USER_INTERRUPT); + if (ring->irq_refcount++ == 0) { + if (IS_G4X(dev)) + i915_enable_irq(dev_priv, I915_BSD_USER_INTERRUPT); + else + ironlake_enable_irq(dev_priv, GT_BSD_USER_INTERRUPT); + } spin_unlock(&ring->irq_lock); return true; @@ -657,8 +661,12 @@ bsd_ring_put_irq(struct intel_ring_buffer *ring) drm_i915_private_t *dev_priv = dev->dev_private; spin_lock(&ring->irq_lock); - if (--ring->irq_refcount == 0) - ironlake_disable_irq(dev_priv, GT_BSD_USER_INTERRUPT); + if (--ring->irq_refcount == 0) { + if (IS_G4X(dev)) + i915_disable_irq(dev_priv, I915_BSD_USER_INTERRUPT); + else + ironlake_disable_irq(dev_priv, GT_BSD_USER_INTERRUPT); + } spin_unlock(&ring->irq_lock); }