| From d6c585a4342a2ff627a29f9aea77c5ed4cd76023 Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Fri, 24 Jul 2009 08:34:59 +0200 |
| Subject: x86: geode: Mark mfgpt irq IRQF_TIMER to prevent resume failure |
| |
| From: Thomas Gleixner <tglx@linutronix.de> |
| |
| commit d6c585a4342a2ff627a29f9aea77c5ed4cd76023 upstream. |
| |
| Timer interrupts are excluded from being disabled during suspend. The |
| clock events code manages the disabling of clock events on its own |
| because the timer interrupt needs to be functional before the resume |
| code reenables the device interrupts. |
| |
| The mfgpt timer request its interrupt without setting the IRQF_TIMER |
| flag so suspend_device_irqs() disables it as well which results in a |
| fatal resume failure. |
| |
| Adding IRQF_TIMER to the interupt flags when requesting the mrgpt |
| timer interrupt solves the problem. |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| LKML-Reference: <new-submission> |
| Cc: Andres Salomon <dilinger@debian.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/x86/kernel/mfgpt_32.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/x86/kernel/mfgpt_32.c |
| +++ b/arch/x86/kernel/mfgpt_32.c |
| @@ -347,7 +347,7 @@ static irqreturn_t mfgpt_tick(int irq, v |
| |
| static struct irqaction mfgptirq = { |
| .handler = mfgpt_tick, |
| - .flags = IRQF_DISABLED | IRQF_NOBALANCING, |
| + .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_TIMER, |
| .name = "mfgpt-timer" |
| }; |
| |