]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge branches 'irq-urgent-for-linus' and 'timers-urgent-for-linus' of git://git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 15 Nov 2015 17:30:48 +0000 (09:30 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 15 Nov 2015 17:30:48 +0000 (09:30 -0800)
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()

1  2  3 
kernel/irq/pm.c

diff --combined kernel/irq/pm.c
index e80c4400118ae7a8e3f09476964260490fccf01a,84ab239a00e27f868ff08d92d06ae5457ec071d8,21c62617a35a6dae316b22221b3b4896317faedd..cea1de0161f18a164aebb84e275ad67d5899eda8
@@@@ -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)) {