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