summaryrefslogtreecommitdiffstats
path: root/kernel/irq/resend.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2015-07-29 18:13:24 -0400
committerThomas Gleixner <tglx@linutronix.de>2015-07-29 18:13:24 -0400
commit4b979e4c611ce750d32b51737f837b485f43c69b (patch)
tree3bc56f2a22d2cf29bc183b67e74e1e8c0733efc0 /kernel/irq/resend.c
parent1559f3b8d0527e24219149c95b3de5e7b2924828 (diff)
parentcbfe8fa6cd672011c755c3cd85c9ffd4e2d10a6f (diff)
Merge branch 'linus' into irq/core
Pull in upstream fixes before applying conflicting changes
Diffstat (limited to 'kernel/irq/resend.c')
-rw-r--r--kernel/irq/resend.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/kernel/irq/resend.c b/kernel/irq/resend.c
index 32fc47c2c622..dd95f44f99b2 100644
--- a/kernel/irq/resend.c
+++ b/kernel/irq/resend.c
@@ -77,13 +77,21 @@ void check_irq_resend(struct irq_desc *desc)
77 unsigned int irq = irq_desc_get_irq(desc); 77 unsigned int irq = irq_desc_get_irq(desc);
78 78
79 /* 79 /*
80 * If the interrupt has a parent irq and runs 80 * If the interrupt is running in the thread
81 * in the thread context of the parent irq, 81 * context of the parent irq we need to be
82 * retrigger the parent. 82 * careful, because we cannot trigger it
83 * directly.
83 */ 84 */
84 if (desc->parent_irq && 85 if (irq_settings_is_nested_thread(desc)) {
85 irq_settings_is_nested_thread(desc)) 86 /*
87 * If the parent_irq is valid, we
88 * retrigger the parent, otherwise we
89 * do nothing.
90 */
91 if (!desc->parent_irq)
92 return;
86 irq = desc->parent_irq; 93 irq = desc->parent_irq;
94 }
87 /* Set it pending and activate the softirq: */ 95 /* Set it pending and activate the softirq: */
88 set_bit(irq, irqs_resend); 96 set_bit(irq, irqs_resend);
89 tasklet_schedule(&resend_tasklet); 97 tasklet_schedule(&resend_tasklet);