• Nicholas Piggin's avatar
    powerpc/powernv: Flush console before platform error reboot · b746e3e0
    Nicholas Piggin authored
    Unrecovered MCE and HMI errors are sent through a special restart OPAL
    call to log the platform error. The downside is that they don't go
    through normal Linux crash paths, so they don't give much information
    to the Linux console.
    
    Change this by providing a special crash function which does some of
    the console flushing from the panic() path before calling firmware to
    reboot.
    
    The downside of this is a little more code to execute before reaching
    the firmware reboot. However in practice, it's critical to get the
    Linux console messages output in order to debug a problem. So this is
    a desirable tradeoff.
    
    Note on the implementation: It is difficult to plumb a custom reboot
    handler into the panic path, because panic does a little bit too much
    work. For example, it will try to delay with the timebase, but that
    may be corrupted in some cases resulting in a hang without reaching
    the platform reboot. Another problem is that panic can invoke the
    crash dump code which is not what we want in the case of a hardware
    platform error. Long-term the best solution will be to rework the
    panic path so it can be suitable for this kind of panic, but for now
    we just duplicate a bit of the code.
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Reviewed-by: default avatarMahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    b746e3e0
opal.c 25 KB