From b569a117de7dcfb1f52fa46471b5eb633d6e81f1 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 11 Sep 2023 15:53:04 +0000 Subject: [PATCH 144/195] panic: Mark emergency section in warn Mark the full contents of __warn() as an emergency section. In this section, the CPU will not perform console output for the printk() calls. Instead, a flushing of the console output will triggered when exiting the emergency section. Co-developed-by: John Ogness Signed-off-by: John Ogness Signed-off-by: Thomas Gleixner (Intel) Signed-off-by: Sebastian Andrzej Siewior --- kernel/panic.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/panic.c b/kernel/panic.c index f0e91a0c4001..147803c3a402 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -663,6 +663,8 @@ struct warn_args { void __warn(const char *file, int line, void *caller, unsigned taint, struct pt_regs *regs, struct warn_args *args) { + nbcon_cpu_emergency_enter(); + disable_trace_on_warning(); if (file) @@ -693,6 +695,8 @@ void __warn(const char *file, int line, void *caller, unsigned taint, /* Just a warning, don't kill lockdep. */ add_taint(taint, LOCKDEP_STILL_OK); + + nbcon_cpu_emergency_exit(); } #ifdef CONFIG_BUG -- 2.43.0