[PATCH] ARM: perf: Fix stacktraces for tracepoint events in THUMB2 kernels
Linus Walleij
linus.walleij at linaro.org
Thu Sep 22 01:57:11 PDT 2022
On Wed, Sep 21, 2022 at 1:19 AM Tomislav Novak <tnovak at fb.com> wrote:
> Store the frame address where arm_get_current_stackframe() looks for it
> (ARM_r7 instead of ARM_fp if CONFIG_THUMB2_KERNEL=y). Otherwise frame->fp
> gets set to 0, causing unwind_frame() to fail.
>
> # bpftrace -e 't:sched:sched_switch { @[kstack] = count(); exit(); }'
> Attaching 1 probe...
> @[
> __schedule+1059
> ]: 1
>
> A typical first unwind instruction is 0x97 (SP = R7), so after executing
> it SP ends up being 0 and -URC_FAILURE is returned.
>
> unwind_frame(pc = ac9da7d7 lr = 00000000 sp = c69bdda0 fp = 00000000)
> unwind_find_idx(ac9da7d7)
> unwind_exec_insn: insn = 00000097
> unwind_exec_insn: fp = 00000000 sp = 00000000 lr = 00000000 pc = 00000000
>
> With this patch:
>
> # bpftrace -e 't:sched:sched_switch { @[kstack] = count(); exit(); }'
> Attaching 1 probe...
> @[
> __schedule+1059
> __schedule+1059
> schedule+79
> schedule_hrtimeout_range_clock+163
> schedule_hrtimeout_range+17
> ep_poll+471
> SyS_epoll_wait+111
> sys_epoll_pwait+231
> __ret_fast_syscall+1
> ]: 1
>
> Signed-off-by: Tomislav Novak <tnovak at fb.com>
Reviewed-by: Linus Walleij <linus.walleij at linaro.org>
Can you put this patch into Russell's patch tracker please?
https://www.armlinux.org.uk/developer/patches/
BTW: what is this interesting CONFIG_THUMB2_KERNEL target
that Facebook/Meta is working on? (It's OK if you can't tell, just
curious.)
Yours,
Linus Walleij
More information about the linux-arm-kernel
mailing list