[Intel-gfx] [PATCH 2/2] drm/i915:fix irq miss in bsd ring for g4x v2

2011-04-28 Thread Feng, Boqun
This patch depends on patch drm/i915:merge ring_put/get_irq into
bsd_ring_put/get_irq

On g4x, user interrupt in bsd ring is missed.
g4x and ironlake share the same bsd_ring, but their interrupt control 
interfaces are different, g4x use I915 while ironlake use GT.
The interrupt mask reg address on g4x should be IMR, user interrupt flag
in bsd ring on g4x is I915_BSD_USER_INTERRUPT

Add conditional judgment about dev version to find out which interrupt
control interface is to use.

Signed-off-by: Feng, Boqun boqun.f...@intel.com
Reviewed-by: Xiang, Haihao haihao.xi...@intel.com
---
 drivers/gpu/drm/i915/intel_ringbuffer.c |   16 
 1 files changed, 12 insertions(+), 4 deletions(-)

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);
 }
 
-- 
1.7.4.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 2/2] drm/i915:fix irq miss in bsd ring for g4x v2

2011-04-28 Thread Chris Wilson
On Thu, 28 Apr 2011 15:22:05 +0800, Feng, Boqun boqun.f...@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

-- 
Chris Wilson, Intel Open Source Technology Centre
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 2/2] drm/i915:fix irq miss in bsd ring for g4x v2

2011-04-28 Thread Feng, Boqun
I got it.
Thanks
-Boqun


-Original Message-
From: Chris Wilson [mailto:ch...@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.f...@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

-- 
Chris Wilson, Intel Open Source Technology Centre
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx