summaryrefslogtreecommitdiff
path: root/kernel/panic.c
diff options
context:
space:
mode:
authorJohn Ogness <john.ogness@linutronix.de>2024-08-20 08:35:52 +0206
committerPetr Mladek <pmladek@suse.com>2024-08-21 14:56:24 +0200
commit5dde3b7354133846079fa51e55e74ef90a836759 (patch)
tree28e69b6323463f7e8b403154158eb7028b46ae0c /kernel/panic.c
parentd2e85ca7a736d2d889bac9aef6ede0a67f6870b2 (diff)
downloadlinux-5dde3b7354133846079fa51e55e74ef90a836759.tar.gz
linux-5dde3b7354133846079fa51e55e74ef90a836759.tar.bz2
linux-5dde3b7354133846079fa51e55e74ef90a836759.zip
printk: nbcon: Add unsafe flushing on panic
Add nbcon_atomic_flush_unsafe() to flush all nbcon consoles using the write_atomic() callback and allowing unsafe hostile takeovers. Call this at the end of panic() as a final attempt to flush any pending messages. Note that legacy consoles use unsafe methods for flushing from the beginning of panic (see bust_spinlocks()). Therefore, systems using both legacy and nbcon consoles may still fail to see panic messages due to unsafe legacy console usage. Signed-off-by: John Ogness <john.ogness@linutronix.de> Reviewed-by: Petr Mladek <pmladek@suse.com> Link: https://lore.kernel.org/r/20240820063001.36405-27-john.ogness@linutronix.de Signed-off-by: Petr Mladek <pmladek@suse.com>
Diffstat (limited to 'kernel/panic.c')
-rw-r--r--kernel/panic.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/panic.c b/kernel/panic.c
index 2a0449144f82..df37c913b010 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -463,6 +463,7 @@ void panic(const char *fmt, ...)
* Explicitly flush the kernel log buffer one last time.
*/
console_flush_on_panic(CONSOLE_FLUSH_PENDING);
+ nbcon_atomic_flush_unsafe();
local_irq_enable();
for (i = 0; ; i += PANIC_TIMER_STEP) {