[Intel-gfx] Test patch for non-MSI GM965 interrupt flood

Keith Packard keithp at keithp.com
Tue Nov 18 07:39:50 CET 2008

This patch skips the loop in the irq handler in non-MSI mode, with the
thought that we never had IRQ floods before it was added. I've tested
for 'a while' on my GM965 and haven't seen any problems, but I hadn't
run the looping code before.

If you're getting IRQs disabled, please give this a try and report back.

From 29165ca636b4703046f1290c489885f1f3c41420 Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp at keithp.com>
Date: Mon, 17 Nov 2008 21:32:29 -0800
Subject: [PATCH] [drm/i915] Don't loop in i915 irq_handler in non-MSI mode

Fixing MSI interrupts required looping in the IRQ handler until IIR went to
zero (otherwise we'd lose interrupts). This isn't required in non-MSI mode
as the IRQ will be re-raised on exit, and if we try this, it appears to make
some machines generate an endless stream of interrupt requests while IIR is
zero. The kernel eventually disables the interrupt and things stop working.

Signed-off-by: Keith Packard <keithp at keithp.com>
 drivers/gpu/drm/i915/i915_irq.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 654d42f..b7e1a04 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -244,7 +244,7 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
 		 * stray interrupts.
 		iir = new_iir;
-	} while (iir != 0);
+	} while (iir != 0 && dev->pdev->msi_enabled);
 	return IRQ_HANDLED;

keith.packard at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20081117/b9656752/attachment.sig>

More information about the Intel-gfx mailing list