65 lines
2.3 KiB
Diff
65 lines
2.3 KiB
Diff
From: John Ogness <john.ogness@linutronix.de>
|
|
Date: Sat, 16 Sep 2023 21:26:02 +0206
|
|
Subject: [PATCH 077/134] printk: Make static printk buffers available to nbcon
|
|
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/6.6/older/patches-6.6.7-rt18.tar.xz
|
|
|
|
The nbcon boot consoles also need printk buffers that are available
|
|
very early. Since the nbcon boot consoles will also be serialized
|
|
by the console_lock, they can use the same static printk buffers
|
|
that the legacy consoles are using.
|
|
|
|
Make the legacy static printk buffers available outside of printk.c
|
|
so they can be used by nbcon.c.
|
|
|
|
Signed-off-by: John Ogness <john.ogness@linutronix.de>
|
|
Reviewed-by: Petr Mladek <pmladek@suse.com>
|
|
Signed-off-by: Petr Mladek <pmladek@suse.com>
|
|
Link: https://lore.kernel.org/r/20230916192007.608398-4-john.ogness@linutronix.de
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
kernel/printk/internal.h | 2 ++
|
|
kernel/printk/printk.c | 13 +++++++++----
|
|
2 files changed, 11 insertions(+), 4 deletions(-)
|
|
|
|
--- a/kernel/printk/internal.h
|
|
+++ b/kernel/printk/internal.h
|
|
@@ -86,6 +86,8 @@ static inline void nbcon_cleanup(struct
|
|
|
|
#endif /* CONFIG_PRINTK */
|
|
|
|
+extern struct printk_buffers printk_shared_pbufs;
|
|
+
|
|
/**
|
|
* struct printk_buffers - Buffers to read/format/output printk messages.
|
|
* @outbuf: After formatting, contains text to output.
|
|
--- a/kernel/printk/printk.c
|
|
+++ b/kernel/printk/printk.c
|
|
@@ -2847,6 +2847,13 @@ static bool printk_get_next_message(stru
|
|
}
|
|
|
|
/*
|
|
+ * Used as the printk buffers for non-panic, serialized console printing.
|
|
+ * This is for legacy (!CON_NBCON) as well as all boot (CON_BOOT) consoles.
|
|
+ * Its usage requires the console_lock held.
|
|
+ */
|
|
+struct printk_buffers printk_shared_pbufs;
|
|
+
|
|
+/*
|
|
* Print one record for the given console. The record printed is whatever
|
|
* record is the next available record for the given console.
|
|
*
|
|
@@ -2863,12 +2870,10 @@ static bool printk_get_next_message(stru
|
|
*/
|
|
static bool console_emit_next_record(struct console *con, bool *handover, int cookie)
|
|
{
|
|
- static struct printk_buffers pbufs;
|
|
-
|
|
bool is_extended = console_srcu_read_flags(con) & CON_EXTENDED;
|
|
- char *outbuf = &pbufs.outbuf[0];
|
|
+ char *outbuf = &printk_shared_pbufs.outbuf[0];
|
|
struct printk_message pmsg = {
|
|
- .pbufs = &pbufs,
|
|
+ .pbufs = &printk_shared_pbufs,
|
|
};
|
|
unsigned long flags;
|
|
|