* 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: genirq: Wake up irq thread after action has been installed
Unified · Split
| @@ -607,7 +607,6 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) · 606 unmodified lines | ||
| 607 | 607 | */ |
| 608 | 608 | get_task_struct(t); |
| 609 | 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) · 76 unmodified lines | ||
| 690 | 689 | (int)(new->flags & IRQF_TRIGGER_MASK)); |
| 691 | 690 | } |
| 692 | 691 | |
| 692 | + new->irq = irq; | |
| 693 | 693 | *old_ptr = new; |
| 694 | 694 | |
| 695 | 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) · 11 unmodified lines | ||
| 707 | 707 | |
| 708 | 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 | 717 | register_irq_proc(irq, desc); |
| 712 | 718 | new->dir = NULL; |
| 713 | 719 | register_handler_proc(irq, new); |