summaryrefslogtreecommitdiff
path: root/kernel/irq/chip.c
diff options
context:
space:
mode:
authorLee Jones <lee.jones@linaro.org>2012-01-05 14:07:23 +0000
committerLee Jones <lee.jones@linaro.org>2012-01-05 14:07:23 +0000
commitbe8c8cd142a9bdae45b0bb6d4c384104f380f7c5 (patch)
treefdadce46d5a958c8e03e2aa48f6106af8ffde3e2 /kernel/irq/chip.c
parent16dacd4f416b90d80a25c41399509d3e1846d1b7 (diff)
parent664b261057869dedc9a9c83fc709936657501614 (diff)
Merge branch 'tracking-igloo_kernel-core' into merge-integration-linux-ux500
Diffstat (limited to 'kernel/irq/chip.c')
-rw-r--r--kernel/irq/chip.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index f7c543a801d..7b35e039a26 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -262,7 +262,7 @@ void handle_nested_irq(unsigned int irq)
{
struct irq_desc *desc = irq_to_desc(irq);
struct irqaction *action;
- irqreturn_t action_ret;
+ irqreturn_t action_ret = IRQ_NONE;
might_sleep();
@@ -277,7 +277,11 @@ void handle_nested_irq(unsigned int irq)
irqd_set(&desc->irq_data, IRQD_IRQ_INPROGRESS);
raw_spin_unlock_irq(&desc->lock);
- action_ret = action->thread_fn(action->irq, action->dev_id);
+ do {
+ action_ret |= action->thread_fn(action->irq, action->dev_id);
+ action = action->next;
+ } while (action);
+
if (!noirqdebug)
note_interrupt(irq, desc, action_ret);