Messages in this thread Patch in this message | | | Date | Tue, 18 Aug 2009 21:31:57 +0200 (CEST) | From | Thomas Gleixner <> | Subject | [GIT pull] irq fixes for 2.6.31 |
| |
Linus,
Please pull the latest irq-fixes-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git irq-fixes-for-linus
I zapped the yesterdays patch as it triggered the hung_task detector when no hard interrupt came in. So I moved the wakeup to the end of setup_irq for now. I still need to figure out why the hung_task detector triggers on that despite claiming otherwise in its comments.
Verified today that the branch contains really what I want you to pull :)
Thanks,
tglx
------------------> Thomas Gleixner (1): genirq: Wake up irq thread after action has been installed
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 d222515..0ec9ed8 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) */ get_task_struct(t); new->thread = t; - wake_up_process(t); } /* @@ -690,6 +689,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) (int)(new->flags & IRQF_TRIGGER_MASK)); } + new->irq = irq; *old_ptr = new; /* Reset broken irq detection when installing new handler */ @@ -707,7 +707,13 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) spin_unlock_irqrestore(&desc->lock, flags); - new->irq = irq; + /* + * Strictly no need to wake it up, but hung_task complains + * when no hard interrupt wakes the thread up. + */ + if (new->thread) + wake_up_process(new->thread); + register_irq_proc(irq, desc); new->dir = NULL; register_handler_proc(irq, new);
| |