riscv, bpf: Implement more atomic operations for RV64
authorPu Lehui <pulehui@huawei.com>
Sun, 10 Apr 2022 10:12:46 +0000 (18:12 +0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 11 Apr 2022 14:54:54 +0000 (16:54 +0200)
commitdd642ccb45ecce1402eb2550f5284fc6bb9ed7b8
tree0e0e04c29e4a88ddfb3ef93d2e736a00adb41ba1
parent33fc250c3e76f99015f5cdbee1de1dd8500d29cc
riscv, bpf: Implement more atomic operations for RV64

This patch implement more BPF atomic operations for RV64. The newly
added operations are shown below:

  atomic[64]_[fetch_]add
  atomic[64]_[fetch_]and
  atomic[64]_[fetch_]or
  atomic[64]_xchg
  atomic[64]_cmpxchg

Since riscv specification does not provide AMO instruction for CAS
operation, we use lr/sc instruction for cmpxchg operation, and AMO
instructions for the rest ops.

Tests "test_bpf.ko" and "test_progs -t atomic" have passed, as well
as "test_verifier" with no new failure cases.

Signed-off-by: Pu Lehui <pulehui@huawei.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Song Liu <songliubraving@fb.com>
Acked-by: Björn Töpel <bjorn@kernel.org>
Link: https://lore.kernel.org/bpf/20220410101246.232875-1-pulehui@huawei.com
arch/riscv/net/bpf_jit.h
arch/riscv/net/bpf_jit_comp64.c