• Matthew Wilcox's avatar
    [PARISC] Enable interrupts while spinning · 65ee8f0a
    Matthew Wilcox authored
    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: default avatarMatthew Wilcox <matthew@wil.cx>
    Signed-off-by: default avatarKyle McMartin <kyle@parisc-linux.org>
    65ee8f0a
spinlock.h 4.52 KB