linux/arch/arc
Vineet Gupta ea207ff62f ARC: add compiler barrier to LLSC based cmpxchg
commit d57f727264 upstream.

When auditing cmpxchg call sites, Chuck noted that gcc was optimizing
away some of the desired LDs.

|	do {
|		new = old = *ipi_data_ptr;
|		new |= 1U << msg;
|	} while (cmpxchg(ipi_data_ptr, old, new) != old);

was generating to below

| 8015cef8:	ld         r2,[r4,0]  <-- First LD
| 8015cefc:	bset       r1,r2,r1
|
| 8015cf00:	llock      r3,[r4]  <-- atomic op
| 8015cf04:	brne       r3,r2,8015cf10
| 8015cf08:	scond      r1,[r4]
| 8015cf0c:	bnz        8015cf00
|
| 8015cf10:	brne       r3,r2,8015cf00  <-- Branch doesn't go to orig LD

Although this was fixed by adding a ACCESS_ONCE in this call site, it
seems safer (for now at least) to add compiler barrier to LLSC based
cmpxchg

Reported-by: Chuck Jordan <cjordan@synopsys.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-03 09:29:41 -07:00
..
boot ARC: [nsimosci] move peripherals to match model to FPGA 2015-01-27 07:52:31 -08:00
configs ARC: [nsimosci] Unbork console 2014-04-14 06:42:19 -07:00
include ARC: add compiler barrier to LLSC based cmpxchg 2015-08-03 09:29:41 -07:00
kernel ARC: signal handling robustify 2015-05-13 05:15:43 -07:00
lib ARC: [lib] strchr breakage in Big-endian configuration 2013-08-29 09:47:34 -07:00
mm arc: mm: Fix build failure 2015-04-29 10:34:01 +02:00
oprofile ARC: OProfile support 2013-02-15 23:16:00 +05:30
plat-arcfpga ARC port updates for Linux 3.10 (part 1) 2013-05-09 14:36:27 -07:00
plat-tb10x ARC: [TB10x] Remove redundant abilis,simple-pinctrl mechanism 2013-05-15 10:12:03 +05:30
Kbuild ARC: Build system: Makefiles, Kconfig, Linker script 2013-02-11 20:00:25 +05:30
Kconfig ARC: [mm] Aliasing VIPT dcache support 2/4 2013-05-09 21:59:46 +05:30
Kconfig.debug ARC: Build system: Makefiles, Kconfig, Linker script 2013-02-11 20:00:25 +05:30
Makefile ARC: [TB10x] Add support for TB10x platform 2013-05-07 13:43:59 +05:30