Thread (7 messages) 7 messages, 4 authors, 2015-02-18

__HAVE_ARCH_CMPXCHG on ARM?

From: Nathan Sullivan <hidden>
Date: 2015-02-03 16:48:48
Also in: linux-rt-users

On Mon, Feb 02, 2015 at 01:39:33PM +0000, Will Deacon wrote:
On Fri, Jan 30, 2015 at 08:44:48AM +0000, Yong Zhang wrote:
quoted
On Fri, Jan 30, 2015 at 2:56 AM, Nathan Sullivan <nathan.sullivan at ni.com<mailto:nathan.sullivan@ni.com>> wrote:

While investigating a performance issue on RT 3.14, I noticed that
__HAVE_ARCH_CMPXCHG is not defined for ARM.  This causes -rt locks to
always use the slow path and impacts performance.  ARMv6 and above
have a cmpxchg implementation already that will work just fine.

In 2012, Yong Zhang submitted a patch to fix this[1], but it mysteriously
disappeared afterwards.  I did notice that the s-o-b line has a different
email address than the windriver one.  Yong, do you mind re-submitting the

It actually doesn't matter. Anyway feel free to add another s-o-b to
the patch:

Signed-off-by: Yong Zhang <yong.zhang at windriver.com<mailto:yong.zhang@windriver.com>>
[...]
quoted
diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h
index 7eb18c1..a91b44e 100644
--- a/arch/arm/include/asm/cmpxchg.h
+++ b/arch/arm/include/asm/cmpxchg.h
@@ -127,6 +127,8 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size

 #else  /* min ARCH >= ARMv6 */

+#define __HAVE_ARCH_CMPXCHG 1
Is it even possible to have CONFIG_SMP=y on an architecture that doesn't
support native cmpxchg? Certainly, the asm-generic cmpxchg.h barfs if
SMP, so couldn't we just change/extend the __HAVE_ARCH_CMPXCHG check in
rtmutex.c to work automatically with SMP architectures? That would help
arm64 too.

Will
What about single Cortex-A8s, for example?  Seems like a non-SMP build should still
have cmpxchg.

Nathan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help