[PARISC] Enable interrupts while spinning
authorMatthew Wilcox <matthew@wil.cx>
Fri, 8 Sep 2006 11:43:44 +0000 (05:43 -0600)
committerMatthew Wilcox <willy@parisc-linux.org>
Wed, 4 Oct 2006 12:48:17 +0000 (06:48 -0600)
commit65ee8f0a7fc2f2267b983f1f0349acb8f19db6e6
treea74a9c7683957545c67777aee644ef14801975a2
parent56f335c89e28c488b1bfea3e5e697fce805c784d
[PARISC] Enable interrupts while spinning

Use the __raw_spin_lock_flags routine so we can take an interrupt while
spinning.  This re-fixes a bug jejb found on 2005-10-20:

CPU0 does a flush_tlb_all holding the vmlist_lock for write.
CPU1 tries a cat of /proc/meminfo which tries to acquire vmlist_lock for read
CPU1 is now spinning with interrupts disabled
CPU0 tries to execute a smp_call_function to flush the local tlb caches
This is now a deadlock because CPU1 is spinning with interrupts disabled and
can never receive the IPI

Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
include/asm-parisc/spinlock.h