linux-stable/arch
Olof Johansson d03853d566 [PATCH] PPC64: Remove hot busy-wait loop in __hash_page
It turns out that our current __hash_page code will do a very hot busy-wait
loop waiting on _PAGE_BUSY to be cleared.  It even does ldarx/stdcx in the
loop, which will bounce reservations around like crazy if there's more than
one CPU spinning on the same PTE (or even another PTE in the same
reservation granule).  The end result is that each fault takes longer when
there's contention, which in turn increases the chance of another thread
hitting the same fault and also piling up.  Not pretty.

There's two options here:
1. Do an out-of-line busy loop a'la spinlocks with just loads (no
   reserves)
2. Just bail and refault if needed.

(2) makes sense here: If the PTE is busy, chances are it's in flux anyway
and the other code path making a change might just be ready to hash it.

This fixes a stampede seen on a large-ish system where a multithreaded
HPC app faults in the same text pages on several cpus at the same time.

Signed-off-by: Olof Johansson <olof@lixom.net>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01 08:58:45 -07:00
..
alpha [PATCH] alpha: key management syscalls 2005-04-21 11:28:26 -07:00
arm [PATCH] ARM: IntegratorCP: Fix CLCD MUX selection values 2005-04-30 23:32:38 +01:00
arm26 [PATCH] freepgt: arm26 FIRST_USER_ADDRESS PAGE_SIZE 2005-04-19 13:29:22 -07:00
cris Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
frv Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
h8300 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
i386 [PATCH] kbuild/i386: re-introduce dependency on vmlinux for install target, and add kernel_install 2005-04-30 16:51:42 -07:00
ia64 From: jbarnes@sgi.com 2005-04-25 13:31:04 -07:00
m32r Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
m68k [PATCH] M68k: Update defconfigs for 2.6.12-rc2 2005-04-18 10:47:34 -07:00
m68knommu Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mips [PATCH] mips: remove #include <linux/audit.h> two times 2005-04-16 15:24:41 -07:00
parisc [PATCH] add Big Endian variants of ioread/iowrite 2005-04-16 15:25:54 -07:00
ppc [PATCH] ppc32: workaround for spurious IRQs on PQ2 2005-05-01 08:58:42 -07:00
ppc64 [PATCH] PPC64: Remove hot busy-wait loop in __hash_page 2005-05-01 08:58:45 -07:00
s390 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sh [PATCH] fix u32 vs. pm_message_t in rest of the tree 2005-04-16 15:25:37 -07:00
sh64 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sparc [SPARC]: dump_stack for sparc 2005-04-24 20:46:49 -07:00
sparc64 [PATCH] mostek bogus sparse annotations fixed 2005-04-24 12:28:36 -07:00
um [PATCH] uml: fix compilation for __CHOOSE_MODE addition 2005-04-16 15:25:39 -07:00
v850 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
x86_64 [PATCH] x86_64: fix PT_NOTE addition to IA32 vDSO 2005-04-28 22:47:29 -07:00