genirq: Don't allow per cpu interrupts to be suspended
The power management functions related to interrupts do not know (yet) about per-cpu interrupts and end up calling the wrong low-level methods to enable/disable interrupts. This leads to all kind of interesting issues (action taken on one CPU only, updating a refcount which is not used otherwise...). The workaround for the time being is simply to flag these interrupts with IRQF_NO_SUSPEND. At least on ARM, these interrupts are actually dealt with at the architecture level. Reported-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1321446459-31409-1-git-send-email-marc.zyngier@arm.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
aa1b052a34
commit
2ed0e645f3
|
@ -1596,7 +1596,7 @@ int request_percpu_irq(unsigned int irq, irq_handler_t handler,
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
action->handler = handler;
|
action->handler = handler;
|
||||||
action->flags = IRQF_PERCPU;
|
action->flags = IRQF_PERCPU | IRQF_NO_SUSPEND;
|
||||||
action->name = devname;
|
action->name = devname;
|
||||||
action->percpu_dev_id = dev_id;
|
action->percpu_dev_id = dev_id;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue