• Vasily Gorbik's avatar
    s390/unwind: start unwinding from reliable state · 222ee908
    Vasily Gorbik authored
    A comment in arch/s390/include/asm/unwind.h says:
    > If 'first_frame' is not zero unwind_start skips unwind frames until it
    > reaches the specified stack pointer.
    > The end of the unwinding is indicated with unwind_done, this can be true
    > right after unwind_start, e.g. with first_frame!=0 that can not be found.
    > unwind_next_frame skips to the next frame.
    > Once the unwind is completed unwind_error() can be used to check if there
    > has been a situation where the unwinder could not correctly understand
    > the tasks call chain.
    
    With this change backchain unwinder now comply with behaviour
    described. As well as matches orc unwinder implementation.  Now unwinder
    starts from reliable state, i.e. __unwind_start own stack frame is
    taken or stack frame generated by __switch_to (ksp) - both known to be
    valid. In case of pt_regs %r15 is better match for pt_regs psw, than
    sometimes random "sp" caller passed.
    Reviewed-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    222ee908
unwind.h 2.8 KB