[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210803131301.5588-10-john.ogness@linutronix.de>
Date: Tue, 3 Aug 2021 15:19:00 +0206
From: John Ogness <john.ogness@...utronix.de>
To: Petr Mladek <pmladek@...e.com>
Cc: Sergey Senozhatsky <senozhatsky@...omium.org>,
Steven Rostedt <rostedt@...dmis.org>,
Thomas Gleixner <tglx@...utronix.de>,
linux-kernel@...r.kernel.org,
Jason Wessel <jason.wessel@...driver.com>,
Daniel Thompson <daniel.thompson@...aro.org>,
Douglas Anderson <dianders@...omium.org>,
Sumit Garg <sumit.garg@...aro.org>,
Cengiz Can <cengiz@...nel.wtf>,
kgdb-bugreport@...ts.sourceforge.net
Subject: [PATCH printk v1 09/10] kdb: if available, only use atomic consoles for output mirroring
Currently kdb uses the @oops_in_progress hack to mirror kdb output
to all active consoles from NMI context. Ignoring locks is unsafe.
Now that an NMI-safe atomic interface is available for consoles,
use only that interface to mirror kdb output if such a console is
available.
Signed-off-by: John Ogness <john.ogness@...utronix.de>
---
kernel/debug/kdb/kdb_io.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
index 6735ac36b718..871b89d6294b 100644
--- a/kernel/debug/kdb/kdb_io.c
+++ b/kernel/debug/kdb/kdb_io.c
@@ -544,6 +544,7 @@ static int kdb_search_string(char *searched, char *searchfor)
static void kdb_msg_write(const char *msg, int msg_len)
{
+ bool atomic_console_available;
struct console *c;
const char *cp;
int len;
@@ -559,11 +560,26 @@ static void kdb_msg_write(const char *msg, int msg_len)
cp++;
}
+ atomic_console_available = have_atomic_console();
+
for_each_console(c) {
if (!(c->flags & CON_ENABLED))
continue;
if (c == dbg_io_ops->cons)
continue;
+
+ /*
+ * If any atomic consoles are available, only atomic
+ * consoles are used.
+ */
+ if (atomic_console_available) {
+ if (c->write_atomic) {
+ c->write_atomic(c, msg, msg_len);
+ touch_nmi_watchdog();
+ }
+ continue;
+ }
+
/*
* Set oops_in_progress to encourage the console drivers to
* disregard their internal spin locks: in the current calling
--
2.20.1
Powered by blists - more mailing lists