From: John Ogness <john.ogness@linutronix.de>
To: Petr Mladek <pmladek@suse.com>,
Benedikt Spranger <b.spranger@linutronix.de>
Cc: Andrew Murray <amurray@thegoodpenguin.co.uk>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Russell King <linux@armlinux.org.uk>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Broadcom internal kernel review list
<bcm-kernel-feedback-list@broadcom.com>,
Ray Jui <rjui@broadcom.com>,
Scott Branden <sbranden@broadcom.com>,
Steven Rostedt <rostedt@goodmis.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Andrew Morton <akpm@linux-foundation.org>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Clark Williams <clrkwllms@kernel.org>,
Randy Dunlap <rdunlap@infradead.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rpi-kernel@lists.infradead.org,
linux-rt-devel@lists.linux.dev
Subject: Re: [PATCH v2 3/4] printk: nbcon: move printk_delay to console emiting code
Date: Wed, 08 Jul 2026 10:25:17 +0206 [thread overview]
Message-ID: <87qzldvqpm.fsf@jogness.linutronix.de> (raw)
In-Reply-To: <ak0VguIf-PxmbUOS@pathway.suse.cz>
On 2026-07-07, Petr Mladek <pmladek@suse.com> wrote:
> To summarize this discussion:
>
> + Benedikt would prefer to add the synchronous mode before
> moving the delay from the printk() caller to the console emit
> code path.
>
> + The delay in the printk() caller code path did not guarantee
> the output but it increased the chance to see it.
>
> + The synchronous mode will be even more reliable than the delay
> in printk() caller path.
>
> Please, let me know if I did not get it right,
>
> John, did you have any plan how to add the synchronous mode, please?
> Does it look complicated?
>
> I guess that we would somehow need to "mis-use" the emergency
> priority and force it everywhere by some global system setting.
The synchronous mode would rely on the driver being nbcon. I envision
something like this:
---- BEGIN SYNC IDEA ----
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 2fe9a963c823a..beb5bb3c037b5 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2456,6 +2456,8 @@ asmlinkage int vprintk_emit(int facility, int level,
if (ft.nbcon_atomic)
nbcon_atomic_flush_pending();
+ else if (have_nbcon_console_sync)
+ nbcon_atomic_flush_sync_pending();
if (ft.nbcon_offload)
nbcon_kthreads_wake();
diff --git a/kernel/printk/nbcon.c b/kernel/printk/nbcon.c
index 4b03b019cd5ee..8f8f29f757614 100644
--- a/kernel/printk/nbcon.c
+++ b/kernel/printk/nbcon.c
@@ -1200,7 +1200,7 @@ static bool nbcon_kthread_should_wakeup(struct console *con, struct nbcon_contex
cookie = console_srcu_read_lock();
flags = console_srcu_read_flags(con);
- if (console_is_usable(con, flags, false)) {
+ if (!(flags & CON_SYNC) && console_is_usable(con, flags, false)) {
/* Bring the sequence in @ctxt up to date */
ctxt->seq = nbcon_seq_read(con);
@@ -1654,7 +1654,7 @@ static void nbcon_atomic_flush_pending_con(struct console *con, u64 stop_seq)
* write_atomic() callback
* @stop_seq: Flush up until this record
*/
-static void __nbcon_atomic_flush_pending(u64 stop_seq)
+static void __nbcon_atomic_flush_pending(u64 stop_seq, bool sync_only)
{
struct console *con;
int cookie;
@@ -1666,6 +1666,9 @@ static void __nbcon_atomic_flush_pending(u64 stop_seq)
if (!(flags & CON_NBCON))
continue;
+ if (sync_only && !(flags & CON_SYNC))
+ continue;
+
if (!console_is_usable(con, flags, true))
continue;
@@ -1688,7 +1691,12 @@ static void __nbcon_atomic_flush_pending(u64 stop_seq)
*/
void nbcon_atomic_flush_pending(void)
{
- __nbcon_atomic_flush_pending(prb_next_reserve_seq(prb));
+ __nbcon_atomic_flush_pending(prb_next_reserve_seq(prb), false);
+}
+
+void nbcon_atomic_flush_sync_pending(void)
+{
+ __nbcon_atomic_flush_pending(prb_next_reserve_seq(prb), true);
}
/**
@@ -1701,7 +1709,7 @@ void nbcon_atomic_flush_pending(void)
void nbcon_atomic_flush_unsafe(void)
{
panic_nbcon_allow_unsafe_takeover = true;
- __nbcon_atomic_flush_pending(prb_next_reserve_seq(prb));
+ __nbcon_atomic_flush_pending(prb_next_reserve_seq(prb), false);
panic_nbcon_allow_unsafe_takeover = false;
}
---- END SYNC IDEA ----
BTW: The sync mode is the final piece so that PeterZ can start using
mainline code for debugging by serial instead of his own workaround [0].
John
[0] https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/log/?h=debug/experimental
next prev parent reply other threads:[~2026-07-08 8:19 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-30 16:35 [PATCH v2 0/4] printk: nbcon: deprecate boot_delay in favour of printk_delay Andrew Murray
2026-06-30 16:35 ` [PATCH v2 1/4] printk: remove BOOT_PRINTK_DELAY config option Andrew Murray
2026-06-30 17:08 ` sashiko-bot
2026-06-30 16:35 ` [PATCH v2 2/4] printk: deprecate boot_delay in favour of printk_delay Andrew Murray
2026-06-30 16:49 ` sashiko-bot
2026-07-08 15:01 ` Petr Mladek
2026-07-09 12:32 ` Andrew Murray
2026-07-09 14:26 ` Petr Mladek
2026-07-09 14:48 ` Andrew Murray
2026-06-30 16:35 ` [PATCH v2 3/4] printk: nbcon: move printk_delay to console emiting code Andrew Murray
2026-06-30 17:09 ` sashiko-bot
2026-07-03 13:03 ` John Ogness
2026-07-03 12:57 ` John Ogness
2026-07-07 15:31 ` Petr Mladek
2026-07-08 10:36 ` John Ogness
2026-07-08 14:00 ` Petr Mladek
2026-07-09 15:27 ` Andrew Murray
2026-07-09 15:01 ` Andrew Murray
2026-07-03 14:56 ` Benedikt Spranger
2026-07-06 17:05 ` Andrew Murray
2026-07-07 7:34 ` John Ogness
2026-07-07 12:54 ` Benedikt Spranger
2026-07-07 15:04 ` Petr Mladek
2026-07-08 8:19 ` John Ogness [this message]
2026-07-08 14:26 ` Petr Mladek
2026-07-08 14:53 ` John Ogness
2026-07-08 15:09 ` Petr Mladek
2026-07-08 15:24 ` John Ogness
2026-07-09 14:27 ` Andrew Murray
2026-07-09 15:21 ` John Ogness
2026-06-30 16:36 ` [PATCH v2 4/4] Documentation/kernel-parameters: add/update printk_delay/boot_delay Andrew Murray
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=87qzldvqpm.fsf@jogness.linutronix.de \
--to=john.ogness@linutronix.de \
--cc=akpm@linux-foundation.org \
--cc=amurray@thegoodpenguin.co.uk \
--cc=b.spranger@linutronix.de \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=bigeasy@linutronix.de \
--cc=clrkwllms@kernel.org \
--cc=corbet@lwn.net \
--cc=florian.fainelli@broadcom.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=linux-rt-devel@lists.linux.dev \
--cc=linux@armlinux.org.uk \
--cc=pmladek@suse.com \
--cc=rdunlap@infradead.org \
--cc=rjui@broadcom.com \
--cc=rostedt@goodmis.org \
--cc=sbranden@broadcom.com \
--cc=senozhatsky@chromium.org \
--cc=skhan@linuxfoundation.org \
--cc=torvalds@linux-foundation.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.