> On Jun 13, 2019, at 6:20 AM, Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote: > > The following commit > > d15d356887e7 ("perf/x86: Make perf callchains work without CONFIG_FRAME_POINTER") > > was a step in the right direction, but it triggered some BPF selftest > failures. That commit exposed the fact that we currently can't unwind > through BPF code. > > - Patch 1 (originally from Song Liu) fixes a bug in the above commit > (regs->ip getting skipped in the stack trace). > > - Patch 2 fixes non-JIT BPF for the ORC unwinder. > > - Patches 3-5 are preparatory improvements for patch 6. > > - Patch 6 fixes JIT BPF for the FP unwinder. > > - Patch 7 fixes JIT BPF for the ORC unwinder (building on patch 6). > > - Patches 8-9 are some readability cleanups. These work well in my tests. Thanks! Tested-by: Song Liu <songliubraving@xxxxxx> > > > Josh Poimboeuf (8): > objtool: Fix ORC unwinding in non-JIT BPF generated code > x86/bpf: Move epilogue generation to a dedicated function > x86/bpf: Simplify prologue generation > x86/bpf: Support SIB byte generation > x86/bpf: Fix JIT frame pointer usage > x86/unwind/orc: Fall back to using frame pointers for generated code > x86/bpf: Convert asm comments to AT&T syntax > x86/bpf: Convert MOV function/macro argument ordering to AT&T syntax > > Song Liu (1): > perf/x86: Always store regs->ip in perf_callchain_kernel() > > arch/x86/events/core.c | 10 +- > arch/x86/kernel/unwind_orc.c | 26 ++- > arch/x86/net/bpf_jit_comp.c | 355 ++++++++++++++++++++--------------- > kernel/bpf/core.c | 5 +- > tools/objtool/check.c | 16 +- > 5 files changed, 246 insertions(+), 166 deletions(-) > > -- > 2.20.1 >