All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] Add generic support for relaxed atomics
@ 2015-07-13 12:31 Will Deacon
  2015-07-13 12:31 ` [PATCH 1/5] atomics: add acquire/release/relaxed variants of some atomic operations Will Deacon
                   ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: Will Deacon @ 2015-07-13 12:31 UTC (permalink / raw)
  To: linux-arch; +Cc: Waiman.Long, peterz, linux-kernel, paulmck, Will Deacon

Hello,

This patch series adds support for a family of relaxed atomics to the
kernel. More specifically:

  - acquire/release/relaxed flavours of xchg, cmpxchg and {add,sub}_return
  - atomic_read_acquire
  - atomic_set_release

This came out of a separate patch series porting the (barrier-heavy)
qrwlock code to arm64. Rather than have arch-specific hooks littered
around the place, it makes more sense to define a core set of relaxed
atomics that can be used regardless of architecture.

For now, the definitions simply take on the existing (i.e. full-barrier)
semantics, but there is a direct mapping onto arm64 and even architectures
with explicit memory barrier instructions (e.g. powerpc, arm) can benefit,
as they do from the existing smp_load_acquire/smp_store_release macros.

The final patch is a proof-of-concept port of the qrwlock over to the
new atomics. It's based on some of the pending patches from me and Waiman,
so it won't apply to mainline but I think it illustrates the usage well
enough.

All feedback welcome,

Will

--->8

Will Deacon (5):
  atomics: add acquire/release/relaxed variants of some atomic
    operations
  asm-generic: rework atomic-long.h to avoid bulk code duplication
  asm-generic: add relaxed/acquire/release variants for atomic_long_t
  lockref: remove homebrew cmpxchg64_relaxed macro definition
  locking/qrwlock: make use of acquire/release/relaxed atomics

 Documentation/atomic_ops.txt      |   4 +-
 include/asm-generic/atomic-long.h | 263 ++++++++++++++------------------------
 include/asm-generic/qrwlock.h     |  13 +-
 include/linux/atomic.h            | 140 ++++++++++++++++++++
 kernel/locking/qrwlock.c          |  12 +-
 lib/lockref.c                     |   8 --
 6 files changed, 248 insertions(+), 192 deletions(-)

-- 
2.1.4


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2015-07-14 15:55 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-13 12:31 [PATCH 0/5] Add generic support for relaxed atomics Will Deacon
2015-07-13 12:31 ` [PATCH 1/5] atomics: add acquire/release/relaxed variants of some atomic operations Will Deacon
2015-07-14 10:25   ` Peter Zijlstra
2015-07-14 10:32     ` Will Deacon
2015-07-14 10:58       ` Peter Zijlstra
2015-07-14 11:08         ` Will Deacon
2015-07-14 11:24           ` Peter Zijlstra
2015-07-14 11:31             ` Will Deacon
2015-07-14 11:38               ` Peter Zijlstra
2015-07-14 15:55                 ` Will Deacon
2015-07-13 12:31 ` [PATCH 2/5] asm-generic: rework atomic-long.h to avoid bulk code duplication Will Deacon
2015-07-13 12:31 ` [PATCH 3/5] asm-generic: add relaxed/acquire/release variants for atomic_long_t Will Deacon
2015-07-13 12:31 ` [PATCH 4/5] lockref: remove homebrew cmpxchg64_relaxed macro definition Will Deacon
2015-07-13 12:31 ` [PATCH 5/5] locking/qrwlock: make use of acquire/release/relaxed atomics Will Deacon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.