From: Linus Torvalds Date: Sun, 15 Nov 2015 17:30:48 +0000 (-0800) Subject: Merge branches 'irq-urgent-for-linus' and 'timers-urgent-for-linus' of git://git... X-Git-Tag: v4.4-rc1~5 X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-linux.git;a=commitdiff_plain;h=511601bdbcacd3ab615564941409bf012435b23d;hp=-c Merge branches 'irq-urgent-for-linus' and 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull irq and timer fixes from Thomas Gleixner: - An irq regression fix to restore the wakeup behaviour of chained interrupts. - A timer fix for a long standing race versus timers scheduled on a target cpu which got exposed by recent changes in the workqueue implementation. * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: genirq/PM: Restore system wake up from chained interrupts * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: timers: Use proper base migration in add_timer_on() --- 511601bdbcacd3ab615564941409bf012435b23d diff --combined kernel/irq/pm.c index e80c4400118a,84ab239a00e2,21c62617a35a..cea1de0161f1 --- a/kernel/irq/pm.c +++ b/kernel/irq/pm.c @@@@ -21,7 -21,7 -21,7 +21,7 @@@@ bool irq_pm_check_wakeup(struct irq_des desc->istate |= IRQS_SUSPENDED | IRQS_PENDING; desc->depth++; irq_disable(desc); -- pm_system_wakeup(); ++ pm_system_irq_wakeup(irq_desc_get_irq(desc)); return true; } return false; @@@@ -70,7 -70,8 -70,7 +70,8 @@@@ void irq_pm_remove_action(struct irq_de static bool suspend_device_irq(struct irq_desc *desc) { - - if (!desc->action || desc->no_suspend_depth) + + if (!desc->action || irq_desc_is_chained(desc) || + + desc->no_suspend_depth) return false; if (irqd_is_wakeup_set(&desc->irq_data)) {