irq: Optimize call to softirq on hardirq exit
authorFrederic Weisbecker <fweisbec@gmail.com>
Tue, 24 Sep 2013 14:39:41 +0000 (16:39 +0200)
committerFrederic Weisbecker <fweisbec@gmail.com>
Tue, 1 Oct 2013 10:53:25 +0000 (12:53 +0200)
Before processing softirqs on hardirq exit, we already
do the check for pending softirqs while hardirqs are
guaranteed to be disabled.

So we can take a shortcut and safely jump to the arch
specific implementation directly.

Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@au1.ibm.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul Mackerras <paulus@au1.ibm.com>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: James E.J. Bottomley <jejb@parisc-linux.org>
Cc: Helge Deller <deller@gmx.de>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Andrew Morton <akpm@linux-foundation.org>
kernel/softirq.c

index 26ee727..17c5cd2 100644 (file)
@@ -335,7 +335,7 @@ static inline void invoke_softirq(void)
                 * in its own stack to prevent from any overrun on top
                 * of a potentially deep task stack.
                 */
-               do_softirq();
+               do_softirq_own_stack();
        } else {
                wakeup_softirqd();
        }