[PATCH 00/11] ARC atomics update

From: Vineet Gupta
Date: Wed Aug 04 2021 - 15:16:12 EST


Hi,

This series contains long due update to ARC atomics, discussed back
in 2018 [1] and [2]. I had them for arc64 port and decided to post them
here for some review and inclusion, after Mark's rework.

The main changes are use of relaxed atomics and generic bitops. Latter
does cause some cogen bloat on ARC due to signed args but that can be
reviewd seperately consider cross-arch impact.

The changes survive glibc testsuite with no regressions whatsoever.

Please review and provide any feedback.

Thx,
-Vineet

[1] https://lore.kernel.org/r/20180830144344.GW24142@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[2] https://lore.kernel.org/r/20180830135749.GA13005@xxxxxxx


Vineet Gupta (10):
ARC: atomics: disintegrate header
ARC: atomic: !LLSC: remove hack in atomic_set() for for UP
ARC: atomic: !LLSC: use int data type consistently
ARC: atomic64: LLSC: elide unused atomic_{and,or,xor,andnot}_return
ARC: atomics: implement relaxed variants
ARC: bitops: fls/ffs to take int (vs long) per asm-generic defines
ARC: xchg: !LLSC: remove UP micro-optimization/hack
ARC: cmpxchg/xchg: rewrite as macros to make type safe
ARC: cmpxchg/xchg: implement relaxed variants (LLSC config only)
ARC: atomic_cmpxchg/atomic_xchg: implement relaxed variants

Will Deacon (1):
ARC: switch to generic bitops

arch/arc/include/asm/atomic-llsc.h | 97 ++++++
arch/arc/include/asm/atomic-spinlock.h | 102 ++++++
arch/arc/include/asm/atomic.h | 444 ++-----------------------
arch/arc/include/asm/atomic64-arcv2.h | 250 ++++++++++++++
arch/arc/include/asm/bitops.h | 188 +----------
arch/arc/include/asm/cmpxchg.h | 233 ++++++-------
arch/arc/include/asm/smp.h | 14 -
arch/arc/kernel/smp.c | 2 -
8 files changed, 588 insertions(+), 742 deletions(-)
create mode 100644 arch/arc/include/asm/atomic-llsc.h
create mode 100644 arch/arc/include/asm/atomic-spinlock.h
create mode 100644 arch/arc/include/asm/atomic64-arcv2.h

--
2.25.1