parisc: ensure broadcast tlb purge runs single threaded
authorHelge Deller <deller@gmx.de>
Tue, 16 Jun 2009 20:51:48 +0000 (20:51 +0000)
committerKyle McMartin <kyle@mcmartin.ca>
Fri, 3 Jul 2009 03:34:09 +0000 (03:34 +0000)
commite82a3b75127188f20c7780bec580e148beb29da7
tree8a11d55123c20b5341a95941c77eb3d35e4ef9d8
parent84be31be3727d11b2a91781306b642e801c5a379
parisc: ensure broadcast tlb purge runs single threaded

The TLB flushing functions on hppa, which causes PxTLB broadcasts on the system
bus, needs to be protected by irq-safe spinlocks to avoid irq handlers to deadlock
the kernel. The deadlocks only happened during I/O intensive loads and triggered
pretty seldom, which is why this bug went so long unnoticed.

Signed-off-by: Helge Deller <deller@gmx.de>
[edited to use spin_lock_irqsave on UP as well since we'd been locking there
 all this time anyway, --kyle]
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
arch/parisc/include/asm/tlbflush.h
arch/parisc/kernel/cache.c
arch/parisc/kernel/pci-dma.c