38 lines
1.4 KiB
Diff
38 lines
1.4 KiB
Diff
From: John Ogness <john.ogness@linutronix.de>
|
|
Date: Thu, 14 Dec 2023 20:48:23 +0000
|
|
Subject: [PATCH 098/134] panic: Flush kernel log buffer at the end
|
|
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.6/older/patches-6.6.7-rt18.tar.xz
|
|
|
|
If the kernel crashes in a context where printk() calls always
|
|
defer printing (such as in NMI or inside a printk_safe section)
|
|
then the final panic messages will be deferred to irq_work. But
|
|
if irq_work is not available, the messages will not get printed
|
|
unless explicitly flushed. The result is that the final
|
|
"end Kernel panic" banner does not get printed.
|
|
|
|
Add one final flush after the last printk() call to make sure
|
|
the final panic messages make it out as well.
|
|
|
|
Signed-off-by: John Ogness <john.ogness@linutronix.de>
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
kernel/panic.c | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
--- a/kernel/panic.c
|
|
+++ b/kernel/panic.c
|
|
@@ -442,6 +442,14 @@ void panic(const char *fmt, ...)
|
|
|
|
/* Do not scroll important messages printed above */
|
|
suppress_printk = 1;
|
|
+
|
|
+ /*
|
|
+ * The final messages may not have been printed if in a context that
|
|
+ * defers printing (such as NMI) and irq_work is not available.
|
|
+ * Explicitly flush the kernel log buffer one last time.
|
|
+ */
|
|
+ console_flush_on_panic(CONSOLE_FLUSH_PENDING);
|
|
+
|
|
local_irq_enable();
|
|
for (i = 0; ; i += PANIC_TIMER_STEP) {
|
|
touch_softlockup_watchdog();
|