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()
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;
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)) {