summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/asm/barrier.h
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2018-03-22 20:41:46 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2018-03-31 00:10:34 +1100
commit0bfdf598900fd62869659f360d3387ed80eb71cf (patch)
tree023c77e758b6f8e8f2bee9de7f1463ea12bae481 /arch/powerpc/include/asm/barrier.h
parent9a2c1d31e6910b9d5e0205f9167d0b1abeea1413 (diff)
downloadlinux-0bfdf598900fd62869659f360d3387ed80eb71cf.tar.bz2
powerpc/64: Fix smp_wmb barrier definition use use lwsync consistently
asm/barrier.h is not always included after asm/synch.h, which meant it was missing __SUBARCH_HAS_LWSYNC, so in some files smp_wmb() would be eieio when it should be lwsync. kernel/time/hrtimer.c is one case. __SUBARCH_HAS_LWSYNC is only used in one place, so just fold it in to where it's used. Previously with my small simulator config, 377 instances of eieio in the tree. After this patch there are 55. Fixes: 46d075be585e ("powerpc: Optimise smp_wmb") Cc: stable@vger.kernel.org # v2.6.29+ Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/asm/barrier.h')
-rw-r--r--arch/powerpc/include/asm/barrier.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h
index 10daa1d56e0a..c7c63959ba91 100644
--- a/arch/powerpc/include/asm/barrier.h
+++ b/arch/powerpc/include/asm/barrier.h
@@ -35,7 +35,8 @@
#define rmb() __asm__ __volatile__ ("sync" : : : "memory")
#define wmb() __asm__ __volatile__ ("sync" : : : "memory")
-#ifdef __SUBARCH_HAS_LWSYNC
+/* The sub-arch has lwsync */
+#if defined(__powerpc64__) || defined(CONFIG_PPC_E500MC)
# define SMPWMB LWSYNC
#else
# define SMPWMB eieio