BPF trampoline is the critical infrastructure of the bpf subsystem, acting as a mediator between kernel functions and BPF programs. Numerous important features, such as using ebpf program for zero overhead kernel introspection, rely on this key component. We can't wait to support bpf trampoline on RV64. The implementation of bpf trampoline was closely to x86 and arm64 for future development. As most of riscv cpu support unaligned memory accesses, we temporarily use patch [1] to facilitate testing. The test results are as follow, and test_verifier with no new failure ceses. - fexit_test:OK - fentry_test:OK - fentry_fexit:OK - fexit_stress:OK - fexit_bpf2bpf:OK - xdp_bpf2bpf:OK - dummy_st_ops:OK - modify_return:OK - trampoline_count:OK - get_func_ip_test:OK - get_func_args_test:OK [1] https://lore.kernel.org/linux-riscv/20210916130855.4054926-2-chenhuang5@xxxxxxxxxx/ v2: - rebase for bpf-next tree. Pu Lehui (4): bpf: Rollback to text_poke when arch not supported ftrace direct call riscv, bpf: Factor out emit_call for kernel and bpf context riscv, bpf: Add bpf_arch_text_poke support for RV64 riscv, bpf: Add bpf trampoline support for RV64 arch/riscv/net/bpf_jit.h | 5 + arch/riscv/net/bpf_jit_comp64.c | 483 ++++++++++++++++++++++++++++++-- kernel/bpf/trampoline.c | 8 +- 3 files changed, 471 insertions(+), 25 deletions(-) -- 2.25.1