51 lines
1.6 KiB
Diff
51 lines
1.6 KiB
Diff
From: John Ogness <john.ogness@linutronix.de>
|
|
Date: Wed, 22 Nov 2023 11:23:43 +0000
|
|
Subject: [PATCH 099/134] printk: Consider nbcon boot consoles on seq init
|
|
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.6/older/patches-6.6.7-rt18.tar.xz
|
|
|
|
If a non-boot console is registering and boot consoles exist, the
|
|
consoles are flushed before being unregistered. This allows the
|
|
non-boot console to continue where the boot console left off.
|
|
|
|
If for whatever reason flushing fails, the lowest seq found from
|
|
any of the enabled boot consoles is used. Until now con->seq was
|
|
checked. However, if it is an nbcon boot console, the function
|
|
nbcon_seq_read() must be used to read seq because con->seq is
|
|
always 0.
|
|
|
|
Check if it is an nbcon boot console and if so call
|
|
nbcon_seq_read() to read seq.
|
|
|
|
Signed-off-by: John Ogness <john.ogness@linutronix.de>
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
kernel/printk/printk.c | 17 +++++++++++++----
|
|
1 file changed, 13 insertions(+), 4 deletions(-)
|
|
|
|
--- a/kernel/printk/printk.c
|
|
+++ b/kernel/printk/printk.c
|
|
@@ -3392,11 +3392,20 @@ static void console_init_seq(struct cons
|
|
|
|
newcon->seq = prb_next_seq(prb);
|
|
for_each_console(con) {
|
|
- if ((con->flags & CON_BOOT) &&
|
|
- (con->flags & CON_ENABLED) &&
|
|
- con->seq < newcon->seq) {
|
|
- newcon->seq = con->seq;
|
|
+ u64 seq;
|
|
+
|
|
+ if (!((con->flags & CON_BOOT) &&
|
|
+ (con->flags & CON_ENABLED))) {
|
|
+ continue;
|
|
}
|
|
+
|
|
+ if (con->flags & CON_NBCON)
|
|
+ seq = nbcon_seq_read(con);
|
|
+ else
|
|
+ seq = con->seq;
|
|
+
|
|
+ if (seq < newcon->seq)
|
|
+ newcon->seq = seq;
|
|
}
|
|
}
|
|
|