• Nicholas Piggin's avatar
    powerpc/watchdog: help remote CPUs to flush NMI printk output · e012c499
    Nicholas Piggin authored
    The printk layer at the moment does not seem to have a good way to force
    flush printk messages that are created in NMI context, except in the
    panic path.
    
    NMI-context printk messages normally get to the console with irq_work,
    but that won't help if the CPU is stuck with irqs disabled, as can be
    the case for hard lockup watchdog messages.
    
    The watchdog currently flushes the printk buffers after detecting a
    lockup on remote CPUs, but they may not have processed their NMI IPI
    yet by that stage, or they may have self-detected a lockup in which
    case they won't go via this NMI IPI path.
    
    Improve the situation by having NMI-context mark a flag if it called
    printk, and have watchdog timer interrupts check if that flag was set
    and try to flush if it was. Latency is not a big problem because we
    were already stuck for a while, just need to try to make sure the
    messages eventually make it out.
    
    Depends-on: 5d5e4522 ("printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces")
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Reviewed-by: default avatarLaurent Dufour <ldufour@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211119113146.752759-6-npiggin@gmail.com
    e012c499
watchdog.c 15.7 KB