alpha: select CONFIG_ARCH_USE_CMPXCHG_LOCKREF.
authorMatt Turner <mattst88@gmail.com>
Tue, 4 Aug 2015 21:35:05 +0000 (14:35 -0700)
committerMatt Turner <mattst88@gmail.com>
Mon, 31 Aug 2015 01:01:16 +0000 (18:01 -0700)
commit8f8dcb3f7fe4febbfa96e64d4ad47de958c5cc34
tree58f9dca31e0fe7d0149ea90b9942594db6c38fae
parent64291f7db5bd8150a74ad2036f1037e6a0428df2
alpha: select CONFIG_ARCH_USE_CMPXCHG_LOCKREF.

On Alpha we have spinlocks that are 32b in size and an efficient
cmpxchg64 implementation, so we qualify to make use of cmpxchg backed
lockrefs. Select the ARCH_USE_CMPXCHG_LOCKREF Kconfig symbol and provide
a trivial implementation of arch_spin_value_unlocked to satisfy the
lockref code.

Using Linus' simple testcase from
http://article.gmane.org/gmane.linux.file-systems/77466 on a dual CPU
ES47 system I see around an 8% gain:

    N       Min       Max    Median       Avg      Stddev
x  30   6194580   6295654   6272504   6272514   17694.232
+  30   6731164   6786334   6767982   6764274   13738.863
Difference at 95.0% confidence
        491760 +/- 8188.17
        7.83992% +/- 0.130541%
        (Student's t, pooled s = 15840.5)

Signed-off-by: Matt Turner <mattst88@gmail.com>
arch/alpha/Kconfig
arch/alpha/include/asm/spinlock.h