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

Hello,

Here is version three of the patches previously posted here:

  v1: https://lwn.net/Articles/650862/
  v2: https://lwn.net/Articles/651293/

The 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.

Changes since v2 include:

  - Re-organised the series so it's more amenable to getting merged
    (i.e. included an extra qrwlock dependency)

  - Added some comments to the qrwlock code

  - Added extra comments to delimit the relaxed atomic macros

  - Fixed typo in comment message

Build tested on ARM, arm64, PowerPC and x86.

All feedback welcome,

Will

--->8

Will Deacon (8):
  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: implement queue_write_unlock using smp_store_release
  locking/qrwlock: make use of acquire/release/relaxed atomics
  include/llist: use linux/atomic.h instead of asm/cmpxchg.h
  ARM: atomics: define our SMP atomics in terms of _relaxed operations

 arch/arm/include/asm/atomic.h     |  37 ++---
 arch/arm/include/asm/cmpxchg.h    |  47 +-----
 arch/x86/include/asm/qrwlock.h    |  10 --
 include/asm-generic/atomic-long.h | 263 +++++++++++--------------------
 include/asm-generic/qrwlock.h     |  22 +--
 include/linux/atomic.h            | 323 ++++++++++++++++++++++++++++++++++++++
 include/linux/llist.h             |   2 +-
 kernel/locking/qrwlock.c          |  23 ++-
 lib/lockref.c                     |   8 -
 9 files changed, 463 insertions(+), 272 deletions(-)

-- 
2.1.4

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

end of thread, other threads:[~2015-07-27 17:51 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-24 14:04 [PATCH v3 0/8] Add generic support for relaxed atomics Will Deacon
2015-07-24 14:04 ` [PATCH v3 1/8] atomics: add acquire/release/relaxed variants of some atomic operations Will Deacon
2015-07-27  9:14   ` Peter Zijlstra
2015-07-27 10:21     ` Will Deacon
2015-07-27 16:33       ` Will Deacon
2015-07-27 17:51         ` Peter Zijlstra
2015-07-24 14:04 ` [PATCH v3 2/8] asm-generic: rework atomic-long.h to avoid bulk code duplication Will Deacon
2015-07-24 14:04 ` [PATCH v3 3/8] asm-generic: add relaxed/acquire/release variants for atomic_long_t Will Deacon
2015-07-24 14:04 ` [PATCH v3 4/8] lockref: remove homebrew cmpxchg64_relaxed macro definition Will Deacon
2015-07-24 14:04 ` [PATCH v3 5/8] locking/qrwlock: implement queue_write_unlock using smp_store_release Will Deacon
2015-07-24 14:04 ` [PATCH v3 6/8] locking/qrwlock: make use of acquire/release/relaxed atomics Will Deacon
2015-07-24 14:04 ` [PATCH v3 7/8] include/llist: use linux/atomic.h instead of asm/cmpxchg.h Will Deacon
2015-07-24 14:04 ` [PATCH v3 8/8] ARM: atomics: define our SMP atomics in terms of _relaxed operations 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.