• Mark Rutland's avatar
    arm64: stacktrace: factor out kunwind_stack_walk() · 1aba06e7
    Mark Rutland authored
    Currently arm64 uses the generic arch_stack_walk() interface for all
    stack walking code. This only passes a PC value and cookie to the unwind
    callback, whereas we'd like to pass some additional information in some
    cases. For example, the BPF exception unwinder wants the FP, for
    reliable stacktrace we'll want to perform additional checks on other
    portions of unwind state, and we'd like to expand the information
    printed by dump_backtrace() to include provenance and reliability
    information.
    
    As preparation for all of the above, this patch factors the core unwind
    logic out of arch_stack_walk() and into a new kunwind_stack_walk()
    function which provides all of the unwind state to a callback function.
    The existing arch_stack_walk() interface is implemented atop this.
    
    The kunwind_stack_walk() function is intended to be a private
    implementation detail of unwinders in stacktrace.c, and not something to
    be exported generally to kernel code. It is __always_inline'd into its
    caller so that neither it or its caller appear in stactraces (which is
    the existing/required behavior for arch_stack_walk() and friends) and so
    that the compiler can optimize away some of the indirection.
    
    There should be no functional change as a result of this patch.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Kalesh Singh <kaleshsingh@google.com>
    Cc: Madhavan T. Venkataraman <madvenka@linux.microsoft.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Puranjay Mohan <puranjay12@gmail.com>
    Cc: Will Deacon <will@kernel.org>
    Reviewed-by: default avatarKalesh Singh <kaleshsingh@google.com>
    Reviewed-by: default avatarPuranjay Mohan <puranjay12@gmail.com>
    Reviewed-by: default avatarMadhavan T. Venkataraman <madvenka@linux.microsoft.com>
    Reviewed-by: default avatarMark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20231124110511.2795958-3-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    1aba06e7
stacktrace.c 7.04 KB