Merge branches 'irq-urgent-for-linus' and 'timers-urgent-for-linus' of git://git...
[firefly-linux-kernel-4.4.55.git] / kernel / irq / pm.c
index 21c62617a35a6dae316b22221b3b4896317faedd..cea1de0161f18a164aebb84e275ad67d5899eda8 100644 (file)
@@ -21,7 +21,7 @@ bool irq_pm_check_wakeup(struct irq_desc *desc)
                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 @@ void irq_pm_remove_action(struct irq_desc *desc, struct irqaction *action)
 
 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)) {