locking/barriers: Introduce smp_cond_load_relaxed() and atomic_cond_read_relaxed()
authorWill Deacon <will.deacon@arm.com>
Thu, 26 Apr 2018 10:34:15 +0000 (11:34 +0100)
committerIngo Molnar <mingo@kernel.org>
Fri, 27 Apr 2018 07:48:44 +0000 (09:48 +0200)
commitfcfdfe30e324725007e9dc5814b62a4c430ea909
tree21ef852058607e75e1130f198abf7f958fb26d8f
parent0644f186fc9d77bb5bd198369e59fb28927a3692
locking/barriers: Introduce smp_cond_load_relaxed() and atomic_cond_read_relaxed()

Whilst we currently provide smp_cond_load_acquire() and
atomic_cond_read_acquire(), there are cases where the ACQUIRE semantics are
not required because of a subsequent fence or release operation once the
conditional loop has exited.

This patch adds relaxed versions of the conditional spinning primitives
to avoid unnecessary barrier overhead on architectures such as arm64.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Waiman Long <longman@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: boqun.feng@gmail.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: paulmck@linux.vnet.ibm.com
Link: http://lkml.kernel.org/r/1524738868-31318-2-git-send-email-will.deacon@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
include/asm-generic/atomic-long.h
include/asm-generic/barrier.h
include/linux/atomic.h