Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/barrier: Use CONFIG_PPC64 for barrier selection

Currently we use ifdef __powerpc64__ in barrier.h to decide if we
should use lwsync or eieio for SMPWMB which is then used by
__smp_wmb().

That means when we are building the compat VDSO we will use eieio,
because it's 32-bit code, even though we're building a 64-bit kernel
for a 64-bit CPU.

Although eieio should work, it would be cleaner if we always used the
same barrier, even for the 32-bit VDSO.

So change the ifdef to CONFIG_PPC64, so that the selection is made
based on the bitness of the kernel we're building for, not the current
compilation unit.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201126131006.2431205-5-mpe@ellerman.id.au

+1 -1
+1 -1
arch/powerpc/include/asm/barrier.h
··· 40 40 #define wmb() __asm__ __volatile__ ("sync" : : : "memory") 41 41 42 42 /* The sub-arch has lwsync */ 43 - #if defined(__powerpc64__) || defined(CONFIG_PPC_E500MC) 43 + #if defined(CONFIG_PPC64) || defined(CONFIG_PPC_E500MC) 44 44 # define SMPWMB LWSYNC 45 45 #else 46 46 # define SMPWMB eieio