linux-cvs-patches
[Top] [All Lists]

CVS Update@linux-mips.org: linux

To: linux-cvs-patches@linux-mips.org
Subject: CVS Update@linux-mips.org: linux
From: ralf@linux-mips.org
Date: Mon, 01 Aug 2005 16:39:35 +0100
Reply-to: linux-mips@linux-mips.org
Sender: linux-cvs-patches-bounce@linux-mips.org
CVSROOT:        /home/cvs
Module name:    linux
Changes by:     ralf@ftp.linux-mips.org 05/08/01 16:39:27

Modified files:
        arch/mips/vr41xx/common: irq.c 

Log message:
        Fix VR41xx suprious interrupt problem.

diff -urN linux/arch/mips/vr41xx/common/irq.c 
linux/arch/mips/vr41xx/common/irq.c
--- linux/arch/mips/vr41xx/common/irq.c 2005/07/11 15:55:50     1.2
+++ linux/arch/mips/vr41xx/common/irq.c 2005/08/01 15:39:27     1.3
@@ -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);
 }

<Prev in Thread] Current Thread [Next in Thread>