hi, adding helpers for trampolines and 2 other fixes to have kernel support for loading trampoline programs in bcc/bpftrace. 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] 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 (6): bpf: Allow ctx access for pointers to scalar bpf: Add bpf_perf_event_output_kfunc bpf: Add bpf_get_stackid_kfunc bpf: Add bpf_get_stack_kfunc 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 | 13 ++++++++++++- kernel/bpf/dispatcher.c | 4 ++-- kernel/bpf/trampoline.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- kernel/extable.c | 7 +++++-- kernel/trace/bpf_trace.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/testing/selftests/bpf/prog_tests/trampoline_count.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/testing/selftests/bpf/progs/test_trampoline_count.c | 21 +++++++++++++++++++++ 8 files changed, 334 insertions(+), 13 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