diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-07-16 12:23:12 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-07-29 23:30:27 +0200 |
commit | 8baf330d664a262b4e6d42728b40e6161ef02183 (patch) | |
tree | bf215a4af7ba21bc5a946e7c4db961a7eaac2987 /kernel/irq/chip.c | |
parent | cecf393e7eca1950e4299f21c072617b8f7b568c (diff) | |
download | lwn-8baf330d664a262b4e6d42728b40e6161ef02183.tar.gz lwn-8baf330d664a262b4e6d42728b40e6161ef02183.zip |
genirq: support forced threading of interrupts
Based on the mainline infrastructure we force thread all interrupts
with per device threads.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/irq/chip.c')
-rw-r--r-- | kernel/irq/chip.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 474657a806d7..3f8f04f4eb8e 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -247,6 +247,7 @@ static unsigned int default_startup(unsigned int irq) { struct irq_desc *desc = irq_to_desc(irq); + desc->status &= ~IRQ_MASKED; desc->chip->enable(irq); return 0; } @@ -382,7 +383,8 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc) atomic_spin_lock(&desc->lock); desc->status &= ~IRQ_INPROGRESS; - if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask) + if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask && + !desc->forced_threads_active) desc->chip->unmask(irq); out_unlock: atomic_spin_unlock(&desc->lock); |