Messages in this thread Patch in this message | | | From | Frederic Weisbecker <> | Date | Thu, 12 Feb 2009 23:33:11 +0100 | Subject | [PATCH 2/2] rt/threadirqs: remove pointless irq disabling on irq thread handlers |
| |
The handlers called by the irq thread lock the desc->lock by using spin_lock_irq. But at this stage, the irqs are already disabled at the end of both handle_IRQ_event() processing and cond_resched_hardirq_context().
A single spin_lock is sufficient.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> --- kernel/irq/manage.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 6e9baf8..8e963a9 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -802,7 +802,7 @@ static void thread_simple_irq(irq_desc_t *desc) spin_unlock(&desc->lock); action_ret = handle_IRQ_event(irq, action); cond_resched_hardirq_context(); - spin_lock_irq(&desc->lock); + spin_lock(&desc->lock); if (!noirqdebug) note_interrupt(irq, desc, action_ret); } while (desc->status & IRQ_PENDING); @@ -863,7 +863,7 @@ static void thread_edge_irq(irq_desc_t *desc) spin_unlock(&desc->lock); action_ret = handle_IRQ_event(irq, action); cond_resched_hardirq_context(); - spin_lock_irq(&desc->lock); + spin_lock(&desc->lock); if (!noirqdebug) note_interrupt(irq, desc, action_ret); } while ((desc->status & IRQ_PENDING) && !desc->depth); @@ -892,7 +892,7 @@ static void thread_do_irq(irq_desc_t *desc) spin_unlock(&desc->lock); action_ret = handle_IRQ_event(irq, action); cond_resched_hardirq_context(); - spin_lock_irq(&desc->lock); + spin_lock(&desc->lock); if (!noirqdebug) note_interrupt(irq, desc, action_ret); } while ((desc->status & IRQ_PENDING) && !desc->depth); @@ -903,8 +903,6 @@ static void thread_do_irq(irq_desc_t *desc) static void do_hardirq(struct irq_desc *desc) { - unsigned long flags; - spin_lock(&desc->lock); if (!(desc->status & IRQ_INPROGRESS)) -- 1.6.1
| |