diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2009-05-16 07:23:45 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2009-05-20 13:53:13 -0400 |
commit | 7e9e05cad94217498e4d9bd6ef7137b4e9e7ed64 (patch) | |
tree | 67a1b4283c4b9644e000eb0326b84e9d6409e54b | |
parent | 950312ce22696ddfa42a957bdadaa9c24151e679 (diff) |
MIPS: IP22: Fix hang in power button interrupt handler
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>
-rw-r--r-- | arch/mips/sgi-ip22/ip22-reset.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/mips/sgi-ip22/ip22-reset.c b/arch/mips/sgi-ip22/ip22-reset.c index 4ad5c3393fd3..45b6694c2079 100644 --- a/arch/mips/sgi-ip22/ip22-reset.c +++ b/arch/mips/sgi-ip22/ip22-reset.c | |||
@@ -148,7 +148,7 @@ static irqreturn_t panel_int(int irq, void *dev_id) | |||
148 | 148 | ||
149 | if (sgint->istat1 & SGINT_ISTAT1_PWR) { | 149 | if (sgint->istat1 & SGINT_ISTAT1_PWR) { |
150 | /* Wait until interrupt goes away */ | 150 | /* Wait until interrupt goes away */ |
151 | disable_irq(SGI_PANEL_IRQ); | 151 | disable_irq_nosync(SGI_PANEL_IRQ); |
152 | init_timer(&debounce_timer); | 152 | init_timer(&debounce_timer); |
153 | debounce_timer.function = debounce; | 153 | debounce_timer.function = debounce; |
154 | debounce_timer.expires = jiffies + 5; | 154 | debounce_timer.expires = jiffies + 5; |