diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2021-11-07 05:51:16 +0100 |
---|---|---|
committer | Petr Mladek <pmladek@suse.com> | 2021-11-10 16:12:00 +0100 |
commit | 5d5e4522a7f404d1a96fd6c703989d32a9c9568d (patch) | |
tree | f0241bc19c8cc4106ac4d2dff236cd58528ef0e4 /kernel/printk | |
parent | lib/nmi_backtrace: Serialize even messages about idle CPUs (diff) | |
download | linux-5d5e4522a7f404d1a96fd6c703989d32a9c9568d.tar.xz linux-5d5e4522a7f404d1a96fd6c703989d32a9c9568d.zip |
printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces
printk from NMI context relies on irq work being raised on the local CPU
to print to console. This can be a problem if the NMI was raised by a
lockup detector to print lockup stack and regs, because the CPU may not
enable irqs (because it is locked up).
Introduce printk_trigger_flush() that can be called another CPU to try
to get those messages to the console, call that where printk_safe_flush
was previously called.
Fixes: 93d102f094be ("printk: remove safe buffers")
Cc: stable@vger.kernel.org # 5.15
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Reviewed-by: John Ogness <john.ogness@linutronix.de>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20211107045116.1754411-1-npiggin@gmail.com
Diffstat (limited to 'kernel/printk')
-rw-r--r-- | kernel/printk/printk.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 65fffa6368c9..eabe23b0a982 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -3261,6 +3261,11 @@ void defer_console_output(void) preempt_enable(); } +void printk_trigger_flush(void) +{ + defer_console_output(); +} + int vprintk_deferred(const char *fmt, va_list args) { int r; |