diff options
Diffstat (limited to 'arch/i386/kernel/visws_apic.c')
-rw-r--r-- | arch/i386/kernel/visws_apic.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/i386/kernel/visws_apic.c b/arch/i386/kernel/visws_apic.c index f7dabc15d..c12054689 100644 --- a/arch/i386/kernel/visws_apic.c +++ b/arch/i386/kernel/visws_apic.c @@ -201,11 +201,13 @@ static void do_cobalt_IRQ(unsigned int irq, struct pt_regs * regs) { unsigned int status; /* XXX APIC EOI? */ - status = desc->status & ~IRQ_REPLAY; + status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING); action = NULL; - if (!(status & (IRQ_DISABLED | IRQ_INPROGRESS))) + if (!(status & (IRQ_DISABLED | IRQ_INPROGRESS))) { action = desc->action; - desc->status = status | IRQ_INPROGRESS; + status |= IRQ_INPROGRESS; + } + desc->status = status; } spin_unlock(&irq_controller_lock); |