From: John Ogness <john.ogness@linutronix.de>
To: Petr Mladek <pmladek@suse.com>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linutronix.de>,
linux-kernel@vger.kernel.org,
Jason Wessel <jason.wessel@windriver.com>,
Daniel Thompson <daniel.thompson@linaro.org>,
Douglas Anderson <dianders@chromium.org>,
Sumit Garg <sumit.garg@linaro.org>,
Cengiz Can <cengiz@kernel.wtf>,
kgdb-bugreport@lists.sourceforge.net
Subject: [PATCH printk v1 09/10] kdb: if available, only use atomic consoles for output mirroring
Date: Tue, 3 Aug 2021 15:19:00 +0206 [thread overview]
Message-ID: <20210803131301.5588-10-john.ogness@linutronix.de> (raw)
In-Reply-To: <20210803131301.5588-1-john.ogness@linutronix.de>
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@linutronix.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
next prev parent reply other threads:[~2021-08-03 13:13 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-03 13:12 [PATCH printk v1 00/10] printk: introduce atomic consoles and sync mode John Ogness
2021-08-03 13:12 ` [PATCH printk v1 01/10] printk: relocate printk cpulock functions John Ogness
2021-08-04 9:24 ` Petr Mladek
2021-08-03 13:12 ` [PATCH printk v1 02/10] printk: rename printk cpulock API and always disable interrupts John Ogness
2021-08-04 9:52 ` Petr Mladek
2021-08-03 13:12 ` [PATCH printk v1 03/10] kgdb: delay roundup if holding printk cpulock John Ogness
2021-08-03 14:25 ` Daniel Thompson
2021-08-03 15:30 ` John Ogness
2021-08-04 11:31 ` Daniel Thompson
2021-08-04 12:12 ` Petr Mladek
2021-08-04 15:04 ` Daniel Thompson
2021-08-05 3:46 ` John Ogness
2021-08-06 12:06 ` Daniel Thompson
2021-08-04 12:31 ` Petr Mladek
2021-08-03 13:12 ` [PATCH printk v1 04/10] printk: relocate printk_delay() John Ogness
2021-08-04 13:07 ` Petr Mladek
2021-08-03 13:12 ` [PATCH printk v1 05/10] printk: call boot_delay_msec() in printk_delay() John Ogness
2021-08-04 13:09 ` Petr Mladek
2021-08-31 1:04 ` Sergey Senozhatsky
2021-08-03 13:12 ` [PATCH printk v1 06/10] printk: use seqcount_latch for console_seq John Ogness
2021-08-05 12:16 ` Petr Mladek
2021-08-05 15:26 ` John Ogness
2021-08-06 15:56 ` Petr Mladek
2021-08-31 3:05 ` Sergey Senozhatsky
2021-08-03 13:12 ` [PATCH printk v1 07/10] console: add write_atomic interface John Ogness
2021-08-03 14:02 ` Andy Shevchenko
2021-08-06 10:56 ` John Ogness
2021-08-06 11:18 ` Andy Shevchenko
2021-08-31 2:55 ` Sergey Senozhatsky
2021-08-03 13:12 ` [PATCH printk v1 08/10] printk: introduce kernel sync mode John Ogness
2021-08-05 17:11 ` Petr Mladek
2021-08-05 21:25 ` John Ogness
2021-08-03 13:13 ` John Ogness [this message]
2021-08-03 13:13 ` [PATCH printk v1 10/10] serial: 8250: implement write_atomic John Ogness
2021-08-03 14:07 ` Andy Shevchenko
2021-08-05 7:47 ` Jiri Slaby
2021-08-05 8:26 ` John Ogness
2021-08-03 13:52 ` [PATCH printk v1 00/10] printk: introduce atomic consoles and sync mode Andy Shevchenko
2021-08-05 15:47 ` Petr Mladek
2021-08-31 0:33 ` Sergey Senozhatsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210803131301.5588-10-john.ogness@linutronix.de \
--to=john.ogness@linutronix.de \
--cc=cengiz@kernel.wtf \
--cc=daniel.thompson@linaro.org \
--cc=dianders@chromium.org \
--cc=jason.wessel@windriver.com \
--cc=kgdb-bugreport@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=senozhatsky@chromium.org \
--cc=sumit.garg@linaro.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®