Re: [PATCH bpf-next v2 0/6] bpf trampoline for arm64

From: Xu Kuohai
Date: Thu Apr 14 2022 - 23:48:06 EST


On 4/15/2022 10:37 AM, Hou Tao wrote:
> Hi,
>
> On 4/15/2022 12:22 AM, Xu Kuohai wrote:
>> Add bpf trampoline support for arm64. Most of the logic is the same as
>> x86.
>>
>> Tested on qemu, result:
>> #55 fentry_fexit:OK
>> #56 fentry_test:OK
>> #58 fexit_sleep:OK
>> #59 fexit_stress:OK
>> #60 fexit_test:OK
>> #67 get_func_args_test:OK
>> #68 get_func_ip_test:OK
>> #101 modify_return:OK
> bpf_struct_ops also depends on bpf trampoline, could you please also add the
> test results for bpf_struct_ops related tests case ?

Yes, more tests is needed. I'm curently testing with bpftrace's kfunc
and bpf selftest, more testing results will be posted.

>>
>> v2:
>> - Add Song's ACK
>> - Change the multi-line comment in is_valid_bpf_tramp_flags() into net
>> style (patch 3)
>> - Fix a deadloop issue in ftrace selftest (patch 2)
>> - Replace pt_regs->x0 with pt_regs->orig_x0 in patch 1 commit message
>> - Replace "bpf trampoline" with "custom trampoline" in patch 1, as
>> ftrace direct call is not only used by bpf trampoline.
>>
>> v1: https://lore.kernel.org/bpf/20220413054959.1053668-1-xukuohai@xxxxxxxxxx/
>>
>> Xu Kuohai (6):
>> arm64: ftrace: Add ftrace direct call support
>> ftrace: Fix deadloop caused by direct call in ftrace selftest
>> bpf: Move is_valid_bpf_tramp_flags() to the public trampoline code
>> bpf, arm64: Impelment bpf_arch_text_poke() for arm64
>> bpf, arm64: bpf trampoline for arm64
>> selftests/bpf: Fix trivial typo in fentry_fexit.c
>>
>> arch/arm64/Kconfig | 2 +
>> arch/arm64/include/asm/ftrace.h | 10 +
>> arch/arm64/kernel/asm-offsets.c | 1 +
>> arch/arm64/kernel/entry-ftrace.S | 28 +-
>> arch/arm64/net/bpf_jit.h | 14 +-
>> arch/arm64/net/bpf_jit_comp.c | 390 +++++++++++++++++-
>> arch/x86/net/bpf_jit_comp.c | 20 -
>> include/linux/bpf.h | 5 +
>> kernel/bpf/bpf_struct_ops.c | 4 +-
>> kernel/bpf/trampoline.c | 35 +-
>> kernel/trace/trace_selftest.c | 4 +-
>> .../selftests/bpf/prog_tests/fentry_fexit.c | 4 +-
>> 12 files changed, 482 insertions(+), 35 deletions(-)
>>
>
> .