Merge branches 'stable/irq.rework' and 'stable/pcifront-fixes' of git://git.kernel...
[pandora-kernel.git] / kernel / irq / manage.c
index 9033c1c..2782bac 100644 (file)
@@ -282,8 +282,17 @@ EXPORT_SYMBOL(disable_irq);
 
 void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume)
 {
-       if (resume)
+       if (resume) {
+               if (!(desc->status & IRQ_SUSPENDED)) {
+                       if (!desc->action)
+                               return;
+                       if (!(desc->action->flags & IRQF_FORCE_RESUME))
+                               return;
+                       /* Pretend that it got disabled ! */
+                       desc->depth++;
+               }
                desc->status &= ~IRQ_SUSPENDED;
+       }
 
        switch (desc->depth) {
        case 0: