lkml.org 
[lkml]   [2019]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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.

\
 
 \ /
  Last update: 2019-06-14 09:42    [W:0.087 / U:0.176 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site