linux/tools/arch
Daniel Borkmann 6b7a21140f tools: add smp_* barrier variants to include infrastructure
Add the definition for smp_rmb(), smp_wmb(), and smp_mb() to the
tools include infrastructure: this patch adds the implementation
for x86-64 and arm64, and have it fall back as currently is for
other archs which do not have it implemented at this point. The
x86-64 one uses lock + add combination for smp_mb() with address
below red zone.

This is on top of 09d62154f6 ("tools, perf: add and use optimized
ring_buffer_{read_head, write_tail} helpers"), which didn't touch
smp_* barrier implementations. Magnus recently rightfully reported
however that the latter on x86-64 still wrongly falls back to sfence,
lfence and mfence respectively, thus fix that for applications under
tools making use of these to avoid such ugly surprises. The main
header under tools (include/asm/barrier.h) will in that case not
select the fallback implementation.

Reported-by: Magnus Karlsson <magnus.karlsson@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2019-04-11 14:45:50 -07:00
..
alpha/include tools include arch: Grab a copy of errno.h for arch's supported by perf 2018-01-23 09:51:37 -03:00
arc/include/uapi/asm License cleanup: add SPDX license identifier to uapi header files with no license 2017-11-02 11:19:54 +01:00
arm/include tools headers uapi: Update tools's copies of kvm headers 2018-09-11 13:09:26 -03:00
arm64/include tools: add smp_* barrier variants to include infrastructure 2019-04-11 14:45:50 -07:00
h8300/include License cleanup: add SPDX license identifier to uapi header files with no license 2017-11-02 11:19:54 +01:00
hexagon/include/uapi/asm License cleanup: add SPDX license identifier to uapi header files with a license 2017-11-02 11:20:11 +01:00
ia64/include tools, perf: add and use optimized ring_buffer_{read_head, write_tail} helpers 2018-10-19 13:43:08 -07:00
microblaze/include/uapi/asm License cleanup: add SPDX license identifier to uapi header files with no license 2017-11-02 11:19:54 +01:00
mips/include tools include arch: Grab a copy of errno.h for arch's supported by perf 2018-01-23 09:51:37 -03:00
parisc/include/uapi/asm parisc: Drop architecture-specific ENOTSUP define 2018-08-13 09:30:41 +02:00
powerpc/include powerpc fixes for 5.0 #3 2019-01-19 05:55:42 +12:00
riscv/include/uapi/asm tools uapi: fix RISC-V 64-bit support 2019-01-07 07:59:28 -08:00
s390/include tools headers: Sync the various kvm.h header copies 2018-10-31 09:57:53 -03:00
sh/include License cleanup: add SPDX license identifier to uapi header files with no license 2017-11-02 11:19:54 +01:00
sparc/include tools, perf: add and use optimized ring_buffer_{read_head, write_tail} helpers 2018-10-19 13:43:08 -07:00
x86 tools: add smp_* barrier variants to include infrastructure 2019-04-11 14:45:50 -07:00
xtensa/include License cleanup: add SPDX license identifier to uapi header files with no license 2017-11-02 11:19:54 +01:00