diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 18:12:06 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 18:12:06 -0800 |
commit | aefb058b0c27dafb15072406fbfd92d2ac2c8790 (patch) | |
tree | de24b50221cfdbd8ebedb2add38c6125de604c3d /kernel/irq/resend.c | |
parent | 37ea95a959d4a49846ecbf2dd45326b6b34bf049 (diff) | |
parent | 04aa530ec04f61875b99c12721162e2964e3318c (diff) | |
download | op-kernel-dev-aefb058b0c27dafb15072406fbfd92d2ac2c8790.zip op-kernel-dev-aefb058b0c27dafb15072406fbfd92d2ac2c8790.tar.gz |
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fixes from Ingo Molnar:
"Affinity fixes and a nested threaded IRQ handling fix."
* 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
genirq: Always force thread affinity
irq: Set CPU affinity right on thread creation
genirq: Provide means to retrigger parent
Diffstat (limited to 'kernel/irq/resend.c')
-rw-r--r-- | kernel/irq/resend.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/irq/resend.c b/kernel/irq/resend.c index 6454db7..9065107 100644 --- a/kernel/irq/resend.c +++ b/kernel/irq/resend.c @@ -74,6 +74,14 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq) if (!desc->irq_data.chip->irq_retrigger || !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) { #ifdef CONFIG_HARDIRQS_SW_RESEND + /* + * If the interrupt has a parent irq and runs + * in the thread context of the parent irq, + * retrigger the parent. + */ + if (desc->parent_irq && + irq_settings_is_nested_thread(desc)) + irq = desc->parent_irq; /* Set it pending and activate the softirq: */ set_bit(irq, irqs_resend); tasklet_schedule(&resend_tasklet); |