parisc: fix irq stack on UP and SMP
authorHelge Deller <deller@gmx.de>
Fri, 24 May 2013 21:27:35 +0000 (21:27 +0000)
committerHelge Deller <deller@gmx.de>
Fri, 24 May 2013 21:29:01 +0000 (23:29 +0200)
commitd96b51ec14650b490ab98e738bcc02309396e5bc
treebcc82f90634f689e629ed692f2fa6f1654d3cbbf
parent2c2d32bed1a1bb6121494965b31badb280f04b0e
parisc: fix irq stack on UP and SMP

The logic to detect if the irq stack was already in use with
raw_spin_trylock() is wrong, because it will generate a "trylock failure
on UP" error message with CONFIG_SMP=n and CONFIG_DEBUG_SPINLOCK=y.

arch_spin_trylock() can't be used either since in the CONFIG_SMP=n case
no atomic protection is given and we are reentrant here. A mutex didn't
worked either and brings more overhead by turning off interrupts.

So, let's use the fastest path for parisc which is the ldcw instruction.

Counting how often the irq stack was used is pretty useless, so just
drop this piece of code.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/include/asm/hardirq.h
arch/parisc/include/asm/processor.h
arch/parisc/kernel/irq.c