diff options
Diffstat (limited to 'kernel/irq/manage.c')
| -rw-r--r-- | kernel/irq/manage.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index d222515a5a06..0ec9ed831737 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
| @@ -607,7 +607,6 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) | |||
| 607 | */ | 607 | */ |
| 608 | get_task_struct(t); | 608 | get_task_struct(t); |
| 609 | new->thread = t; | 609 | new->thread = t; |
| 610 | wake_up_process(t); | ||
| 611 | } | 610 | } |
| 612 | 611 | ||
| 613 | /* | 612 | /* |
| @@ -690,6 +689,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) | |||
| 690 | (int)(new->flags & IRQF_TRIGGER_MASK)); | 689 | (int)(new->flags & IRQF_TRIGGER_MASK)); |
| 691 | } | 690 | } |
| 692 | 691 | ||
| 692 | new->irq = irq; | ||
| 693 | *old_ptr = new; | 693 | *old_ptr = new; |
| 694 | 694 | ||
| 695 | /* Reset broken irq detection when installing new handler */ | 695 | /* Reset broken irq detection when installing new handler */ |
| @@ -707,7 +707,13 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) | |||
| 707 | 707 | ||
| 708 | spin_unlock_irqrestore(&desc->lock, flags); | 708 | spin_unlock_irqrestore(&desc->lock, flags); |
| 709 | 709 | ||
| 710 | new->irq = irq; | 710 | /* |
| 711 | * Strictly no need to wake it up, but hung_task complains | ||
| 712 | * when no hard interrupt wakes the thread up. | ||
| 713 | */ | ||
| 714 | if (new->thread) | ||
| 715 | wake_up_process(new->thread); | ||
| 716 | |||
| 711 | register_irq_proc(irq, desc); | 717 | register_irq_proc(irq, desc); |
| 712 | new->dir = NULL; | 718 | new->dir = NULL; |
| 713 | register_handler_proc(irq, new); | 719 | register_handler_proc(irq, new); |
