Thread (20 messages) 20 messages, 6 authors, 2023-05-17

Re: [PATCH v2 3/5] locking/arch: Wire up local_try_cmpxchg

From: Uros Bizjak <hidden>
Date: 2023-04-12 13:38:09
Also in: linux-alpha, linux-arch, linux-mips, linux-perf-users, lkml, loongarch

On Wed, Apr 12, 2023 at 1:33 PM Peter Zijlstra [off-list ref] wrote:
On Wed, Apr 05, 2023 at 04:17:08PM +0200, Uros Bizjak wrote:
quoted
diff --git a/arch/powerpc/include/asm/local.h b/arch/powerpc/include/asm/local.h
index bc4bd19b7fc2..45492fb5bf22 100644
--- a/arch/powerpc/include/asm/local.h
+++ b/arch/powerpc/include/asm/local.h
@@ -90,6 +90,17 @@ static __inline__ long local_cmpxchg(local_t *l, long o, long n)
      return t;
 }

+static __inline__ bool local_try_cmpxchg(local_t *l, long *po, long n)
+{
+     long o = *po, r;
+
+     r = local_cmpxchg(l, o, n);
+     if (unlikely(r != o))
+             *po = r;
+
+     return likely(r == o);
+}
+
Why is the ppc one different from the rest? Why can't it use the
try_cmpxchg_local() fallback and needs to have it open-coded?
Please note that ppc directly defines local_cmpxchg that bypasses
cmpxchg_local/arch_cmpxchg_local machinery. The patch takes the same
approach for local_try_cmpxchg, because fallbacks are using
arch_cmpxchg_local definitions.

PPC should be converted to use arch_cmpxchg_local (to also enable
instrumentation), but this is not the scope of the proposed patchset.

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