Subject: [PATCH 2.6] vr41xx: fix spurious IRQ problem

From: Yoichi Yuasa <[email-masked]>
Date: Tue, 2 Aug 2005 00:35:38 +0900

Hi Ralf,

This patch has fixed spurious IRQ problem about vr41xx.
Please apply this patch.

Yoichi

Signed-off-by: Yoichi Yuasa <[email-masked]>

diff -urN -X dontdiff a-orig/arch/mips/vr41xx/common/irq.c a/arch/mips/vr41xx/common/irq.c
--- a-orig/arch/mips/vr41xx/common/irq.c	2005-07-12 01:04:42.000000000 +0900
+++ a/arch/mips/vr41xx/common/irq.c	2005-07-31 21:07:17.000000000 +0900
@@ -62,6 +62,7 @@
 asmlinkage void irq_dispatch(unsigned int irq, struct pt_regs *regs)
 {
 	irq_cascade_t *cascade;
+	irq_desc_t *desc;
 
 	if (irq >= NR_IRQS) {
 		atomic_inc(&irq_err_count);
@@ -70,11 +71,15 @@
 
 	cascade = irq_cascade + irq;
 	if (cascade->get_irq != NULL) {
+		unsigned int source_irq = irq;
+		desc = irq_desc + source_irq;
+		desc->handler->ack(source_irq);
 		irq = cascade->get_irq(irq, regs);
 		if (irq < 0)
 			atomic_inc(&irq_err_count);
 		else
 			irq_dispatch(irq, regs);
+		desc->handler->end(source_irq);
 	} else
 		do_IRQ(irq, regs);
 }

---

From: Ralf Baechle <[email-masked]>
Date: Mon, 1 Aug 2005 16:40:11 +0100

> This patch has fixed spurious IRQ problem about vr41xx.

Applied,

  Ralf