• Torsten Duwe's avatar
    powerpc/livepatch: Implement reliable stack tracing for the consistency model · df78d3f6
    Torsten Duwe authored
    The "Power Architecture 64-Bit ELF V2 ABI" says in section 2.3.2.3:
    
    [...] There are several rules that must be adhered to in order to ensure
    reliable and consistent call chain backtracing:
    
    * Before a function calls any other function, it shall establish its
      own stack frame, whose size shall be a multiple of 16 bytes.
    
     – In instances where a function’s prologue creates a stack frame, the
       back-chain word of the stack frame shall be updated atomically with
       the value of the stack pointer (r1) when a back chain is implemented.
       (This must be supported as default by all ELF V2 ABI-compliant
       environments.)
    [...]
     – The function shall save the link register that contains its return
       address in the LR save doubleword of its caller’s stack frame before
       calling another function.
    
    To me this sounds like the equivalent of HAVE_RELIABLE_STACKTRACE.
    This patch may be unneccessarily limited to ppc64le, but OTOH the only
    user of this flag so far is livepatching, which is only implemented on
    PPCs with 64-LE, a.k.a. ELF ABI v2.
    
    Feel free to add other ppc variants, but so far only ppc64le got tested.
    
    This change also implements save_stack_trace_tsk_reliable() for ppc64le
    that checks for the above conditions, where possible.
    Signed-off-by: default avatarTorsten Duwe <duwe@suse.de>
    Signed-off-by: default avatarNicolai Stange <nstange@suse.de>
    Acked-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    df78d3f6
Kconfig 34.4 KB