From: Peter Zijlstra <peterz@infradead.org>
To: Boqun Feng <boqun.feng@gmail.com>
Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
Ingo Molnar <mingo@kernel.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Thomas Gleixner <tglx@linutronix.de>,
Will Deacon <will.deacon@arm.com>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Waiman Long <waiman.long@hp.com>
Subject: Re: [RFC 2/5] atomics: introduce arch_atomic_op_{acquire,release,fence} helpers
Date: Fri, 28 Aug 2015 13:36:14 +0200 [thread overview]
Message-ID: <20150828113614.GC16853@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <1440730099-29133-3-git-send-email-boqun.feng@gmail.com>
On Fri, Aug 28, 2015 at 10:48:16AM +0800, Boqun Feng wrote:
> Some architectures may have their special barriers for acquire, release
> and fence semantics, general memory barriers(smp_mb__*_atomic()) in
> __atomic_op_*() may be too strong, so arch_atomic_op_*() helpers are
> introduced for architectures to provide their own version helpers to
> build different variants based on _relaxed variants.
>
> Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
> ---
> include/linux/atomic.h | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/include/linux/atomic.h b/include/linux/atomic.h
> index 00a5763..622255b 100644
> --- a/include/linux/atomic.h
> +++ b/include/linux/atomic.h
> @@ -34,20 +34,33 @@
> * The idea here is to build acquire/release variants by adding explicit
> * barriers on top of the relaxed variant. In the case where the relaxed
> * variant is already fully ordered, no additional barriers are needed.
> + *
> + * Besides, if an arch has a special barrier for acquire/release, it could
> + * implement its own arch_atomic_op_* and use the same framework for building
> + * variants
> */
> +#ifndef arch_atomic_op_acquire
> #define __atomic_op_acquire(op, args...) \
> ({ \
> typeof(op##_relaxed(args)) __ret = op##_relaxed(args); \
> smp_mb__after_atomic(); \
> __ret; \
> })
> +#else
> +#define __atomic_op_acquire arch_atomic_op_acquire
> +#endif
Not really a fan of this, its not consistent with the existing #ifndef
guard style.
next prev parent reply other threads:[~2015-08-28 11:36 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-28 2:48 [RFC 0/5] atomics: powerpc: implement relaxed/acquire/release variants of some atomics Boqun Feng
2015-08-28 2:48 ` [RFC 1/5] atomics: add test for atomic operations with _relaxed variants Boqun Feng
2015-08-28 2:48 ` [RFC 2/5] atomics: introduce arch_atomic_op_{acquire, release, fence} helpers Boqun Feng
2015-08-28 2:48 ` [RFC 2/5] atomics: introduce arch_atomic_op_{acquire,release,fence} helpers Boqun Feng
2015-08-28 11:36 ` Peter Zijlstra [this message]
2015-08-28 11:50 ` Boqun Feng
2015-08-28 2:48 ` [RFC 3/5] powerpc: atomic: implement atomic{, 64}_{add, sub}_return_* variants Boqun Feng
2015-08-28 2:48 ` [RFC 3/5] powerpc: atomic: implement atomic{,64}_{add,sub}_return_* variants Boqun Feng
2015-08-28 10:48 ` Peter Zijlstra
2015-08-28 12:06 ` Boqun Feng
2015-08-28 14:16 ` Boqun Feng
2015-08-28 15:39 ` Peter Zijlstra
2015-08-28 16:59 ` Boqun Feng
2015-09-01 19:00 ` Will Deacon
2015-09-01 21:45 ` Paul E. McKenney
2015-09-02 9:59 ` Will Deacon
2015-09-02 10:49 ` Paul E. McKenney
2015-09-02 15:23 ` Pranith Kumar
2015-09-02 15:36 ` [RFC 3/5] powerpc: atomic: implement atomic{, 64}_{add, sub}_return_* variants Pranith Kumar
2015-09-02 15:36 ` [RFC 3/5] powerpc: atomic: implement atomic{,64}_{add,sub}_return_* variants Pranith Kumar
2015-09-03 10:31 ` Will Deacon
2015-09-11 12:45 ` Will Deacon
2015-09-11 17:09 ` Paul E. McKenney
2015-09-14 11:35 ` Peter Zijlstra
2015-09-14 12:01 ` Peter Zijlstra
2015-09-14 12:11 ` Peter Zijlstra
2015-09-14 15:38 ` Will Deacon
2015-09-14 16:26 ` Paul E. McKenney
2015-08-28 2:48 ` [RFC 4/5] powerpc: atomic: implement xchg_* and atomic{, 64}_xchg_* variants Boqun Feng
2015-08-28 2:48 ` [RFC 4/5] powerpc: atomic: implement xchg_* and atomic{,64}_xchg_* variants Boqun Feng
2015-08-28 2:48 ` [RFC 5/5] powerpc: atomic: implement cmpxchg{, 64}_* and atomic{, 64}_cmpxchg_* variants Boqun Feng
2015-08-28 2:48 ` [RFC 5/5] powerpc: atomic: implement cmpxchg{,64}_* and atomic{,64}_cmpxchg_* variants Boqun Feng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150828113614.GC16853@twins.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=benh@kernel.crashing.org \
--cc=boqun.feng@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mingo@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=paulmck@linux.vnet.ibm.com \
--cc=paulus@samba.org \
--cc=tglx@linutronix.de \
--cc=waiman.long@hp.com \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.