diff options
author | Marc Zyngier <[email protected]> | 2011-11-16 12:27:39 +0000 |
---|---|---|
committer | Thomas Gleixner <[email protected]> | 2011-11-17 17:44:04 +0100 |
commit | 2ed0e645f358c26f4f4a7aed56a9488db0020ad1 (patch) | |
tree | f8425da7c40d068d532cc53313eebdd3414e5047 | |
parent | aa1b052a34d7ec85b23f4fba564df24b9477201b (diff) |
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 <[email protected]>
Tested-by: Santosh Shilimkar <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Cc: [email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Thomas Gleixner <[email protected]>
-rw-r--r-- | kernel/irq/manage.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 67ce837ae52c..0e2b179bc7b3 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -1596,7 +1596,7 @@ int request_percpu_irq(unsigned int irq, irq_handler_t handler, return -ENOMEM; action->handler = handler; - action->flags = IRQF_PERCPU; + action->flags = IRQF_PERCPU | IRQF_NO_SUSPEND; action->name = devname; action->percpu_dev_id = dev_id; |