diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2011-11-16 12:27:39 +0000 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-11-17 17:44:04 +0100 |
commit | 2ed0e645f358c26f4f4a7aed56a9488db0020ad1 (patch) | |
tree | f8425da7c40d068d532cc53313eebdd3414e5047 /kernel/irq | |
parent | aa1b052a34d7ec85b23f4fba564df24b9477201b (diff) | |
download | blackbird-op-linux-2ed0e645f358c26f4f4a7aed56a9488db0020ad1.tar.gz blackbird-op-linux-2ed0e645f358c26f4f4a7aed56a9488db0020ad1.zip |
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>
Diffstat (limited to 'kernel/irq')
-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; |