arch: Prepare for smp_mb__{before,after}_atomic()
authorPeter Zijlstra <peterz@infradead.org>
Thu, 6 Feb 2014 17:16:07 +0000 (18:16 +0100)
committerIngo Molnar <mingo@kernel.org>
Fri, 18 Apr 2014 09:40:30 +0000 (11:40 +0200)
commitfebdbfe8a91ce0d11939d4940b592eb0dba8d663
tree5651dc5030d3cc43a0e852f60ca2627835ef194f
parent2ab08ee9f0a4eba27c7c4ce0b6d5118e8a18554b
arch: Prepare for smp_mb__{before,after}_atomic()

Since the smp_mb__{before,after}*() ops are fundamentally dependent on
how an arch can implement atomics it doesn't make sense to have 3
variants of them. They must all be the same.

Furthermore, the 3 variants suggest they're only valid for those 3
atomic ops, while we have many more where they could be applied.

So move away from
smp_mb__{before,after}_{atomic,clear}_{dec,inc,bit}() and reduce the
interface to just the two: smp_mb__{before,after}_atomic().

This patch prepares the way by introducing default implementations in
asm-generic/barrier.h that default to a full barrier and providing
__deprecated inlines for the previous 6 barriers if they're not
provided by the arch.

This should allow for a mostly painless transition (lots of deprecated
warns in the interim).

Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/n/tip-wr59327qdyi9mbzn6x937s4e@git.kernel.org
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: "Chen, Gong" <gong.chen@linux.intel.com>
Cc: John Sullivan <jsrhbz@kanargh.force9.co.uk>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mauro Carvalho Chehab <m.chehab@samsung.com>
Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: "Theodore Ts'o" <tytso@mit.edu>
Cc: linux-arch@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
include/asm-generic/atomic.h
include/asm-generic/barrier.h
include/asm-generic/bitops.h
include/linux/atomic.h
include/linux/bitops.h
kernel/sched/core.c