Removal of printk safe buffers delays NMI context printk
From: Nicholas Piggin
Date: Thu Nov 04 2021 - 11:54:53 EST
Hi John,
It seems printk from NMI context is now delayed indefinitely and
there is no printk_safe_flush equivalent (or I can't see one) to
allow a NMI buffer to be flushed by a different CPU.
This causes hard lockup watchdog messages to not get shown on the
console. I can call printk from a different CPU and that seems to
flush the stuck CPU's NMI buffer immediately.
What's the best way to expose this? Can we have something like tihs?
void printk_flush(void)
{
preempt_disable();
if (console_trylock_spinning())
console_unlock();
preempt_enable();
wake_up_klogd();
}
Thanks,
Nick