• Daniel Borkmann's avatar
    tools: add smp_* barrier variants to include infrastructure · 6b7a2114
    Daniel Borkmann authored
    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 09d62154 ("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: default avatarMagnus Karlsson <magnus.karlsson@intel.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    6b7a2114
barrier.h 1.32 KB