I missed this set before sending my RFC set. If this set works well, we won't need the other set. I will give this one a try. Thanks, Song On Mon, Jan 27, 2025 at 1:33 PM Weinan Liu <wnliu@xxxxxxxxxx> wrote: > > This patchset implements a generic kernel sframe-based [1] unwinder. > The main goal is to support reliable stacktraces on arm64. > > On x86 orc unwinder provides reliable stacktraces. But arm64 misses the > required support from objtool: it cannot generate orc unwind tables for > arm64. > > Currently, there's already a sframe unwinder proposed for userspace: [2]. > Since the sframe unwind table algorithm is similar, these two proposal > could integrate common functionality in the future. > > There are some incomplete features or challenges: > - The unwinder doesn't yet work with kernel modules. The `start_addr` of > FRE from kernel modules doesn't appear correct, preventing us from > unwinding functions from kernel modules. > - Currently, only GCC supports sframe. > > Ref: > [1]: https://sourceware.org/binutils/docs/sframe-spec.html > [2]: https://lore.kernel.org/lkml/cover.1730150953.git.jpoimboe@xxxxxxxxxx/ > > Madhavan T. Venkataraman (1): > arm64: Define TIF_PATCH_PENDING for livepatch > > Weinan Liu (7): > unwind: build kernel with sframe info > arm64: entry: add unwind info for various kernel entries > unwind: add sframe v2 header > unwind: Implement generic sframe unwinder library > unwind: arm64: Add sframe unwinder on arm64 > unwind: arm64: add reliable stacktrace support for arm64 > arm64: Enable livepatch for ARM64 > > Makefile | 6 + > arch/Kconfig | 8 + > arch/arm64/Kconfig | 3 + > arch/arm64/Kconfig.debug | 10 + > arch/arm64/include/asm/stacktrace/common.h | 6 + > arch/arm64/include/asm/thread_info.h | 4 +- > arch/arm64/kernel/entry-common.c | 4 + > arch/arm64/kernel/entry.S | 10 + > arch/arm64/kernel/setup.c | 2 + > arch/arm64/kernel/stacktrace.c | 102 ++++++++++ > include/asm-generic/vmlinux.lds.h | 12 ++ > include/linux/sframe_lookup.h | 43 +++++ > kernel/Makefile | 1 + > kernel/sframe.h | 215 +++++++++++++++++++++ > kernel/sframe_lookup.c | 196 +++++++++++++++++++ > 15 files changed, 621 insertions(+), 1 deletion(-) > create mode 100644 include/linux/sframe_lookup.h > create mode 100644 kernel/sframe.h > create mode 100644 kernel/sframe_lookup.c > > -- > 2.48.1.262.g85cc9f2d1e-goog > >