diff options
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r-- | kernel/irq/manage.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 2a6c6ee11a3f..78a566a9b39f 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -329,10 +329,8 @@ void __disable_irq(struct irq_desc *desc, unsigned int irq, bool suspend) | |||
329 | desc->status |= IRQ_SUSPENDED; | 329 | desc->status |= IRQ_SUSPENDED; |
330 | } | 330 | } |
331 | 331 | ||
332 | if (!desc->depth++) { | 332 | if (!desc->depth++) |
333 | desc->status |= IRQ_DISABLED; | ||
334 | irq_disable(desc); | 333 | irq_disable(desc); |
335 | } | ||
336 | } | 334 | } |
337 | 335 | ||
338 | /** | 336 | /** |
@@ -407,12 +405,11 @@ void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) | |||
407 | WARN(1, KERN_WARNING "Unbalanced enable for IRQ %d\n", irq); | 405 | WARN(1, KERN_WARNING "Unbalanced enable for IRQ %d\n", irq); |
408 | break; | 406 | break; |
409 | case 1: { | 407 | case 1: { |
410 | unsigned int status = desc->status & ~IRQ_DISABLED; | ||
411 | |||
412 | if (desc->status & IRQ_SUSPENDED) | 408 | if (desc->status & IRQ_SUSPENDED) |
413 | goto err_out; | 409 | goto err_out; |
414 | /* Prevent probing on this irq: */ | 410 | /* Prevent probing on this irq: */ |
415 | desc->status = status | IRQ_NOPROBE; | 411 | desc->status |= IRQ_NOPROBE; |
412 | irq_enable(desc); | ||
416 | check_irq_resend(desc, irq); | 413 | check_irq_resend(desc, irq); |
417 | /* fall-through */ | 414 | /* fall-through */ |
418 | } | 415 | } |