hi, sending 2 fixes to fix kernel support for loading trampoline programs in bcc/bpftrace and allow to unwind through trampoline/dispatcher. Original rfc post [1]. Speedup output of perf bench while running klockstat.py on kprobes vs trampolines: Without: $ perf bench sched messaging -l 50000 ... Total time: 18.571 [sec] With current kprobe tracing: $ perf bench sched messaging -l 50000 ... Total time: 183.395 [sec] With kfunc tracing: $ perf bench sched messaging -l 50000 ... Total time: 39.773 [sec] v4 changes: - rebased on latest bpf-next/master - removed image tree mutex and use trampoline_mutex instead - checking directly for string pointer in patch 1 [Alexei] - skipped helpers patches, as they are no longer needed [Alexei] v3 changes: - added ack from John Fastabend for patch 1 - move out is_bpf_image_address from is_bpf_text_address call [David] v2 changes: - make the unwind work for dispatcher as well - added test for allowed trampolines count - used raw tp pt_regs nest-arrays for trampoline helpers thanks, jirka [1] https://lore.kernel.org/netdev/20191229143740.29143-1-jolsa@xxxxxxxxxx/ --- Jiri Olsa (3): bpf: Allow BTF ctx access for string pointers bpf: Allow to resolve bpf trampoline and dispatcher in unwind selftest/bpf: Add test for allowed trampolines count include/linux/bpf.h | 12 +++++++++++- kernel/bpf/btf.c | 16 ++++++++++++++++ kernel/bpf/dispatcher.c | 4 ++-- kernel/bpf/trampoline.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- kernel/extable.c | 7 +++++-- tools/testing/selftests/bpf/prog_tests/trampoline_count.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/testing/selftests/bpf/progs/test_trampoline_count.c | 21 +++++++++++++++++++++ 7 files changed, 242 insertions(+), 12 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/trampoline_count.c create mode 100644 tools/testing/selftests/bpf/progs/test_trampoline_count.c