ARM: 9259/1: stacktrace: Convert stacktrace to generic ARCH_STACKWALK
authorLi Huafei <lihuafei1@huawei.com>
Tue, 18 Oct 2022 12:59:02 +0000 (13:59 +0100)
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Mon, 14 Nov 2022 12:00:57 +0000 (12:00 +0000)
commit9fbed16c3f4f2bebff610ff1ebb756785dfde0be
tree0c62e32c3358584e5bf804c513b7637dc79a21e3
parent70ccc7c0667ba8a39dab274b3836b063a6b4ecf9
ARM: 9259/1: stacktrace: Convert stacktrace to generic ARCH_STACKWALK

Historically architectures have had duplicated code in their stack trace
implementations for filtering what gets traced. In order to avoid this
duplication some generic code has been provided using a new interface
arch_stack_walk(), enabled by selecting ARCH_STACKWALK in Kconfig, which
factors all this out into the generic stack trace code. Convert ARM to
use this common infrastructure.

When initializing the stack frame of the current task, arm64 uses
__builtin_frame_address(1) to initialize the frame pointer, skipping
arch_stack_walk(), see the commit c607ab4f916d ("arm64: stacktrace:
don't trace arch_stack_walk()"). Since __builtin_frame_address(1) does
not work on ARM, unwind_frame() is used to unwind the stack one layer
forward before calling walk_stackframe().

Signed-off-by: Li Huafei <lihuafei1@huawei.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
arch/arm/Kconfig
arch/arm/kernel/stacktrace.c