MIPS: IP22: Fix hang in power button interrupt handler
authorRalf Baechle <ralf@linux-mips.org>
Sat, 16 May 2009 11:23:45 +0000 (12:23 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 20 May 2009 17:53:13 +0000 (18:53 +0100)
The hang was caused by the use of disable_irq() from the interrupt handler
itself.  Fixed by the use of disable_irq_nosync().  The issue was
triggered by:

    commit 3aa551c9b4c40018f0e261a178e3d25478dc04a9
    Author: Thomas Gleixner <tglx@linutronix.de>
    Date:   Mon Mar 23 18:28:15 2009 +0100

        genirq: add threaded interrupt handler support

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/sgi-ip22/ip22-reset.c

index 4ad5c3393fd3160016716187cf5428ebb7236e91..45b6694c20796de82d14a15d79c34ee52d54c55a 100644 (file)
@@ -148,7 +148,7 @@ static irqreturn_t panel_int(int irq, void *dev_id)
 
        if (sgint->istat1 & SGINT_ISTAT1_PWR) {
                /* Wait until interrupt goes away */
-               disable_irq(SGI_PANEL_IRQ);
+               disable_irq_nosync(SGI_PANEL_IRQ);
                init_timer(&debounce_timer);
                debounce_timer.function = debounce;
                debounce_timer.expires = jiffies + 5;