Hey Mark, On 6/25/22 6:12 PM, Xu Kuohai wrote:
This patchset introduces bpf trampoline on arm64. A bpf trampoline converts native calling convention to bpf calling convention and is used to implement various bpf features, such as fentry, fexit, fmod_ret and struct_ops. The trampoline introduced does essentially the same thing as the bpf trampoline does on x86. Tested on raspberry pi 4b and qemu: #18 /1 bpf_tcp_ca/dctcp:OK #18 /2 bpf_tcp_ca/cubic:OK #18 /3 bpf_tcp_ca/invalid_license:OK #18 /4 bpf_tcp_ca/dctcp_fallback:OK #18 /5 bpf_tcp_ca/rel_setsockopt:OK #18 bpf_tcp_ca:OK #51 /1 dummy_st_ops/dummy_st_ops_attach:OK #51 /2 dummy_st_ops/dummy_init_ret_value:OK #51 /3 dummy_st_ops/dummy_init_ptr_arg:OK #51 /4 dummy_st_ops/dummy_multiple_args:OK #51 dummy_st_ops:OK #57 /1 fexit_bpf2bpf/target_no_callees:OK #57 /2 fexit_bpf2bpf/target_yes_callees:OK #57 /3 fexit_bpf2bpf/func_replace:OK #57 /4 fexit_bpf2bpf/func_replace_verify:OK #57 /5 fexit_bpf2bpf/func_sockmap_update:OK #57 /6 fexit_bpf2bpf/func_replace_return_code:OK #57 /7 fexit_bpf2bpf/func_map_prog_compatibility:OK #57 /8 fexit_bpf2bpf/func_replace_multi:OK #57 /9 fexit_bpf2bpf/fmod_ret_freplace:OK #57 fexit_bpf2bpf:OK #237 xdp_bpf2bpf:OK v6: - Since Mark is refactoring arm64 ftrace to support long jump and reduce the ftrace trampoline overhead, it's not clear how we'll attach bpf trampoline to regular kernel functions, so remove ftrace related patches for now. - Add long jump support for attaching bpf trampoline to bpf prog, since bpf trampoline and bpf prog are allocated via vmalloc, there is chance the distance exceeds the max branch range. - Collect ACK/Review-by, not sure if the ACK and Review-bys for bpf_arch_text_poke() should be kept, since the changes to it is not trivial - Update some commit messages and comments
Given you've been taking a look and had objections in v5, would be great if you can find some cycles for this v6. Thanks a lot, Daniel