41 lines
1.4 KiB
Diff
41 lines
1.4 KiB
Diff
From: Yong Zhang <yong.zhang at windriver.com>
|
|
Date: Thu, 29 Jan 2015 12:56:18 -0600
|
|
Subject: ARM: cmpxchg: define __HAVE_ARCH_CMPXCHG for armv6 and later
|
|
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.1/patches-4.1.3-rt3.tar.xz
|
|
|
|
Both pi_stress and sigwaittest in rt-test show performance gain with
|
|
__HAVE_ARCH_CMPXCHG. Testing result on coretile_express_a9x4:
|
|
|
|
pi_stress -p 99 --duration=300 (on linux-3.4-rc5; bigger is better)
|
|
vanilla: Total inversion performed: 5493381
|
|
patched: Total inversion performed: 5621746
|
|
|
|
sigwaittest -p 99 -l 100000 (on linux-3.4-rc5-rt6; less is better)
|
|
3.4-rc5-rt6: Min 24, Cur 27, Avg 30, Max 98
|
|
patched: Min 19, Cur 21, Avg 23, Max 96
|
|
|
|
Signed-off-by: Yong Zhang <yong.zhang0 at gmail.com>
|
|
Cc: Russell King <rmk+kernel at arm.linux.org.uk>
|
|
Cc: Nicolas Pitre <nico at linaro.org>
|
|
Cc: Will Deacon <will.deacon at arm.com>
|
|
Cc: Catalin Marinas <catalin.marinas at arm.com>
|
|
Cc: Thomas Gleixner <tglx at linutronix.de>
|
|
Cc: linux-arm-kernel at lists.infradead.org
|
|
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
arch/arm/include/asm/cmpxchg.h | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
--- a/arch/arm/include/asm/cmpxchg.h
|
|
+++ b/arch/arm/include/asm/cmpxchg.h
|
|
@@ -129,6 +129,8 @@ static inline unsigned long __xchg(unsig
|
|
|
|
#else /* min ARCH >= ARMv6 */
|
|
|
|
+#define __HAVE_ARCH_CMPXCHG 1
|
|
+
|
|
extern void __bad_cmpxchg(volatile void *ptr, int size);
|
|
|
|
/*
|