Messages in this thread | | | Date | Fri, 14 Jun 2019 09:41:37 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 7/9] x86/unwind/orc: Fall back to using frame pointers for generated code |
| |
On Thu, Jun 13, 2019 at 11:00:09PM -0700, Alexei Starovoitov wrote:
> There is something wrong with > commit d15d356887e7 ("perf/x86: Make perf callchains work without CONFIG_FRAME_POINTER")
It assumes we can always unwind stack, which is, imo, not a weird thing.
> If I simply revert it and have CONFIG_UNWINDER_FRAME_POINTER=y > JITed stacks work just fine, because > bpf_get_stackid()->get_perf_callchain() > need to start unwinding before any bpf stuff.
How does stack unwinding work if we try and unwind from an interrupt that hits inside a BPF program? That too needs to work properly.
> After that commit it needs to go through which is a bug on its own. > imo patch 1 doesn't really fix that issue.
This we agree on, patch 1 doesn't solve that at all. But we also should not loose the initial regs->ip value.
> As far as mangled rbp can we partially undo old > commit 177366bf7ceb ("bpf: change x86 JITed program stack layout") > that introduced that rbp adjustment.
> Going through bpf code is only interesting in case of panics somewhere > in bpf helpers. Back then we didn't even have ksym of jited code.
I disagree here, interrupts/NMIs hitting inside BPF should be able to reliably unwind the entire stack. Back then is irrelevant, these days we expect a reliable unwind.
> Anyhow I agree that we need to make the jited frame proper, > but unwinding need to start before any bpf stuff. > That's a bigger issue.
I strongly disagree, we should be able to unwind through bpf.
| |