[patch] powerpc: hash lock use lock bitops

Nick Piggin npiggin at suse.de
Tue Nov 20 16:09:50 EST 2007

This isn't a bugfix, but may help performance slightly...

powerpc 64-bit hash pte lock bit is an actual lock, so it can take advantage
of lock bitops for slightly more optimal memory barriers (can avoid an lwsync
in the trylock).

Signed-off-by: Nick Piggin <npiggin at suse.de>
Acked-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
Index: linux-2.6/arch/powerpc/mm/hash_native_64.c
--- linux-2.6.orig/arch/powerpc/mm/hash_native_64.c
+++ linux-2.6/arch/powerpc/mm/hash_native_64.c
@@ -113,7 +113,7 @@ static inline void native_lock_hpte(stru
 	unsigned long *word = &hptep->v;
 	while (1) {
-		if (!test_and_set_bit(HPTE_LOCK_BIT, word))
+		if (!test_and_set_bit_lock(HPTE_LOCK_BIT, word))
 		while(test_bit(HPTE_LOCK_BIT, word))
@@ -124,8 +124,7 @@ static inline void native_unlock_hpte(st
 	unsigned long *word = &hptep->v;
-	asm volatile("lwsync":::"memory");
-	clear_bit(HPTE_LOCK_BIT, word);
+	clear_bit_unlock(HPTE_LOCK_BIT, word);
 static long native_hpte_insert(unsigned long hpte_group, unsigned long va,

More information about the Linuxppc-dev mailing list