bpf: Add support for certain atomics in bpf_arena to x86 JIT
authorAlexei Starovoitov <ast@kernel.org>
Fri, 5 Apr 2024 23:11:33 +0000 (16:11 -0700)
committerMartin KaFai Lau <martin.lau@kernel.org>
Tue, 9 Apr 2024 17:24:26 +0000 (10:24 -0700)
commitd503a04f8bc0c75dc9db9452d8cc79d748afb752
tree54f3e9a2c1954e9e916989a454233fe56ce5ba25
parentbb761fcb821738e8d3b720e1460d3783db74c68a
bpf: Add support for certain atomics in bpf_arena to x86 JIT

Support atomics in bpf_arena that can be JITed as a single x86 instruction.
Instructions that are JITed as loops are not supported at the moment,
since they require more complex extable and loop logic.

JITs can choose to do smarter things with bpf_jit_supports_insn().
Like arm64 may decide to support all bpf atomics instructions
when emit_lse_atomic is available and none in ll_sc mode.

bpf_jit_supports_percpu_insn(), bpf_jit_supports_ptr_xchg() and
other such callbacks can be replaced with bpf_jit_supports_insn()
in the future.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20240405231134.17274-1-alexei.starovoitov@gmail.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
arch/x86/net/bpf_jit_comp.c
include/linux/filter.h
kernel/bpf/core.c
kernel/bpf/verifier.c