summaryrefslogtreecommitdiffstats
path: root/arch/x86/include
diff options
context:
space:
mode:
authorAndrey Konovalov <andreyknvl@google.com>2015-08-02 11:11:04 -0400
committerIngo Molnar <mingo@kernel.org>2015-08-03 04:59:30 -0400
commit76695af20c015206cffb84b15912be6797d0cca2 (patch)
tree9b11a22a998d19422b137cde196866efea49657c /arch/x86/include
parent75d2270280686bff21b9ba66c7f3dd379c887981 (diff)
locking, arch: use WRITE_ONCE()/READ_ONCE() in smp_store_release()/smp_load_acquire()
Replace ACCESS_ONCE() macro in smp_store_release() and smp_load_acquire() with WRITE_ONCE() and READ_ONCE() on x86, arm, arm64, ia64, metag, mips, powerpc, s390, sparc and asm-generic since ACCESS_ONCE() does not work reliably on non-scalar types. WRITE_ONCE() and READ_ONCE() were introduced in the following commits: 230fa253df63 ("kernel: Provide READ_ONCE and ASSIGN_ONCE") 43239cbe79fc ("kernel: Change ASSIGN_ONCE(val, x) to WRITE_ONCE(x, val)") Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Davidlohr Bueso <dbueso@suse.de> Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Acked-by: Ralf Baechle <ralf@linux-mips.org> Cc: Alexander Duyck <alexander.h.duyck@redhat.com> Cc: Andre Przywara <andre.przywara@arm.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Borislav Petkov <bp@suse.de> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: David S. Miller <davem@davemloft.net> Cc: Davidlohr Bueso <dave@stgolabs.net> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: James Hogan <james.hogan@imgtec.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Russell King <linux@arm.linux.org.uk> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tony Luck <tony.luck@intel.com> Cc: Will Deacon <will.deacon@arm.com> Cc: linux-arch@vger.kernel.org Link: http://lkml.kernel.org/r/1438528264-714-1-git-send-email-andreyknvl@google.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/include')
-rw-r--r--arch/x86/include/asm/barrier.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/x86/include/asm/barrier.h b/arch/x86/include/asm/barrier.h
index e51a8f803f55..d2bcfbed11c3 100644
--- a/arch/x86/include/asm/barrier.h
+++ b/arch/x86/include/asm/barrier.h
@@ -57,12 +57,12 @@
57do { \ 57do { \
58 compiletime_assert_atomic_type(*p); \ 58 compiletime_assert_atomic_type(*p); \
59 smp_mb(); \ 59 smp_mb(); \
60 ACCESS_ONCE(*p) = (v); \ 60 WRITE_ONCE(*p, v); \
61} while (0) 61} while (0)
62 62
63#define smp_load_acquire(p) \ 63#define smp_load_acquire(p) \
64({ \ 64({ \
65 typeof(*p) ___p1 = ACCESS_ONCE(*p); \ 65 typeof(*p) ___p1 = READ_ONCE(*p); \
66 compiletime_assert_atomic_type(*p); \ 66 compiletime_assert_atomic_type(*p); \
67 smp_mb(); \ 67 smp_mb(); \
68 ___p1; \ 68 ___p1; \
@@ -74,12 +74,12 @@ do { \
74do { \ 74do { \
75 compiletime_assert_atomic_type(*p); \ 75 compiletime_assert_atomic_type(*p); \
76 barrier(); \ 76 barrier(); \
77 ACCESS_ONCE(*p) = (v); \ 77 WRITE_ONCE(*p, v); \
78} while (0) 78} while (0)
79 79
80#define smp_load_acquire(p) \ 80#define smp_load_acquire(p) \
81({ \ 81({ \
82 typeof(*p) ___p1 = ACCESS_ONCE(*p); \ 82 typeof(*p) ___p1 = READ_ONCE(*p); \
83 compiletime_assert_atomic_type(*p); \ 83 compiletime_assert_atomic_type(*p); \
84 barrier(); \ 84 barrier(); \
85 ___p1; \ 85 ___p1; \