summaryrefslogtreecommitdiff
path: root/arch/arc/include/asm/uaccess.h
diff options
context:
space:
mode:
authorPavel Kozlov <pavel.kozlov@synopsys.com>2023-08-15 18:11:36 +0300
committerVineet Gupta <vgupta@kernel.org>2023-08-16 03:27:26 +0300
commit42f51fb24fd39cc547c086ab3d8a314cc603a91c (patch)
tree296dcde00f8246e66920889547795d8a4a91db91 /arch/arc/include/asm/uaccess.h
parent4d3696801bad2a037832c15a8d21dfe0c529d9cd (diff)
downloadlinux-42f51fb24fd39cc547c086ab3d8a314cc603a91c.tar.xz
ARC: atomics: Add compiler barrier to atomic operations...
... to avoid unwanted gcc optimizations SMP kernels fail to boot with commit 596ff4a09b89 ("cpumask: re-introduce constant-sized cpumask optimizations"). | | percpu: BUG: failure at mm/percpu.c:2981/pcpu_build_alloc_info()! | The write operation performed by the SCOND instruction in the atomic inline asm code is not properly passed to the compiler. The compiler cannot correctly optimize a nested loop that runs through the cpumask in the pcpu_build_alloc_info() function. Fix this by add a compiler barrier (memory clobber in inline asm). Apparently atomic ops used to have memory clobber implicitly via surrounding smp_mb(). However commit b64be6836993c431e ("ARC: atomics: implement relaxed variants") removed the smp_mb() for the relaxed variants, but failed to add the explicit compiler barrier. Link: https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/135 Cc: <stable@vger.kernel.org> # v6.3+ Fixes: b64be6836993c43 ("ARC: atomics: implement relaxed variants") Signed-off-by: Pavel Kozlov <pavel.kozlov@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@kernel.org> [vgupta: tweaked the changelog and added Fixes tag]
Diffstat (limited to 'arch/arc/include/asm/uaccess.h')
0 files changed, 0 insertions, 0 deletions