]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - kernel/irq/manage.c
genirq: Add IRQF_FORCE_RESUME
[karo-tx-linux.git] / kernel / irq / manage.c
index 6a2281f781c10c42f3666161ce3dc6d504c3286c..a6a8b6af1fe7c1b375ace38a235b4a40370d7180 100644 (file)
@@ -281,8 +281,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: