]> git.hungrycats.org Git - linux/commitdiff
ppc64: clear IRQ_INPROGRESS in setup_irq and enable_irq
authorAnton Blanchard <anton@samba.org>
Wed, 15 Oct 2003 03:04:16 +0000 (13:04 +1000)
committerAnton Blanchard <anton@samba.org>
Wed, 15 Oct 2003 03:04:16 +0000 (13:04 +1000)
arch/ppc64/kernel/irq.c

index 69da3c7fceabaa19034eeb7a39ad3b9ecf29f75b..d9631b90476df3a1ecdb5bf87b5c1d89e97269d5 100644 (file)
@@ -55,9 +55,6 @@
 #include <asm/machdep.h>
 #include <asm/paca.h>
 
-void enable_irq(unsigned int irq_nr);
-void disable_irq(unsigned int irq_nr);
-
 #ifdef CONFIG_SMP
 extern void iSeries_smp_message_recv( struct pt_regs * );
 #endif
@@ -123,7 +120,7 @@ setup_irq(unsigned int irq, struct irqaction * new)
 
        if (!shared) {
                desc->depth = 0;
-               desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING);
+               desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS);
                unmask_irq(irq);
        }
        spin_unlock_irqrestore(&desc->lock,flags);
@@ -297,7 +294,7 @@ void enable_irq(unsigned int irq)
        spin_lock_irqsave(&desc->lock, flags);
        switch (desc->depth) {
        case 1: {
-               unsigned int status = desc->status & ~IRQ_DISABLED;
+               unsigned int status = desc->status & ~(IRQ_DISABLED | IRQ_INPROGRESS);
                desc->status = status;
                if ((status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) {
                        desc->status = status | IRQ_REPLAY;