linux/arch/arc
Pavel Kozlov 42f51fb24f ARC: atomics: Add compiler barrier to atomic operations...
... to avoid unwanted gcc optimizations

SMP kernels fail to boot with commit 596ff4a09b
("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 b64be68369
("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: b64be68369 ("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]
2023-08-15 17:27:26 -07:00
..
boot arc: dts: Harmonize EHCI/OHCI DT nodes name 2022-10-17 16:32:12 -07:00
configs mm/slab: rename CONFIG_SLAB to CONFIG_SLAB_DEPRECATED 2023-05-26 19:01:47 +02:00
include ARC: atomics: Add compiler barrier to atomic operations... 2023-08-15 17:27:26 -07:00
kernel ARC: -Wmissing-prototype warning fixes 2023-08-13 16:53:02 -07:00
lib
mm ARC: -Wmissing-prototype warning fixes 2023-08-13 16:53:02 -07:00
plat-axs10x arc: Replace lkml.org links with lore 2021-12-28 19:48:49 -08:00
plat-hsdk arc: Replace lkml.org links with lore 2021-12-28 19:48:49 -08:00
plat-sim
plat-tb10x
Kbuild kbuild: use more subdir- for visiting subdirectories while cleaning 2021-10-24 13:49:46 +09:00
Kconfig mm/fault: convert remaining simple cases to lock_mm_and_find_vma() 2023-06-24 14:12:58 -07:00
Kconfig.debug
Makefile kbuild: remove head-y syntax 2022-10-02 18:06:03 +09:00