[Intel-gfx] [Patch 5/5] multiple ring buffer support, fix a irq enable logic for BSD

Zou, Nanhai nanhai.zou at intel.com
Wed Apr 7 08:28:39 CEST 2010


Fix the BSD ring related IRQ logic on Ironlake.
Without this patch, we sometimes see IRQ lost 
When playing H.264 content.

Signed-off-by: Wang Zhenyu <zhenyu.z.wang at intel.com>
Signed-off-by: Zou Nan hai <nanhai.zou at intel.com>

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 22c8f66..0da9716 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -67,6 +67,11 @@ void
 ironlake_enable_graphics_irq(drm_i915_private_t *dev_priv, u32 mask)
 {
 	if ((dev_priv->gt_irq_mask_reg & mask) != 0) {
+		I915_WRITE(GTIIR, mask);
+		(void) I915_READ(GTIIR);
+		dev_priv->gt_irq_enable_reg |= mask;
+		I915_WRITE(GTIER, dev_priv->gt_irq_enable_reg);
+		(void) I915_READ(GTIER);
 		dev_priv->gt_irq_mask_reg &= ~mask;
 		I915_WRITE(GTIMR, dev_priv->gt_irq_mask_reg);
 		(void) I915_READ(GTIMR);
@@ -77,9 +82,15 @@ void
 ironlake_disable_graphics_irq(drm_i915_private_t *dev_priv, u32 mask)
 {
 	if ((dev_priv->gt_irq_mask_reg & mask) != mask) {
+		dev_priv->gt_irq_enable_reg &= ~mask;
+		I915_WRITE(GTIER, dev_priv->gt_irq_enable_reg);
+		(void) I915_READ(GTIER);
 		dev_priv->gt_irq_mask_reg |= mask;
 		I915_WRITE(GTIMR, dev_priv->gt_irq_mask_reg);
 		(void) I915_READ(GTIMR);
+		I915_WRITE(GTIIR, mask);
+		(void) I915_READ(GTIIR);
+
 	}
 }
 
@@ -1283,7 +1294,7 @@ static int ironlake_irq_postinstall(struct drm_device *dev)
 	/* enable kind of interrupts always enabled */
 	u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT |
 			   DE_PLANEA_FLIP_DONE | DE_PLANEB_FLIP_DONE;
-	u32 render_mask = GT_USER_INTERRUPT | GT_BSD_USER_INTERRUPT;
+	u32 render_mask = 0; /* enable nothing initially */
 	u32 hotplug_mask = SDE_CRT_HOTPLUG | SDE_PORTB_HOTPLUG |
 			   SDE_PORTC_HOTPLUG | SDE_PORTD_HOTPLUG;

-------------- next part --------------
A non-text attachment was scrubbed...
Name: bsd_irq.patch
Type: application/octet-stream
Size: 1548 bytes
Desc: bsd_irq.patch
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20100407/4860010d/attachment.obj>


More information about the Intel-gfx mailing list