diff options
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r-- | kernel/irq/manage.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 538fce2db51..a06b9b6d6b5 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -359,8 +359,17 @@ EXPORT_SYMBOL(disable_irq); | |||
359 | 359 | ||
360 | void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) | 360 | void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) |
361 | { | 361 | { |
362 | if (resume) | 362 | if (resume) { |
363 | if (!(desc->status & IRQ_SUSPENDED)) { | ||
364 | if (!desc->action) | ||
365 | return; | ||
366 | if (!(desc->action->flags & IRQF_FORCE_RESUME)) | ||
367 | return; | ||
368 | /* Pretend that it got disabled ! */ | ||
369 | desc->depth++; | ||
370 | } | ||
363 | desc->status &= ~IRQ_SUSPENDED; | 371 | desc->status &= ~IRQ_SUSPENDED; |
372 | } | ||
364 | 373 | ||
365 | switch (desc->depth) { | 374 | switch (desc->depth) { |
366 | case 0: | 375 | case 0: |