Commit d818b56f authored by John Ogness's avatar John Ogness Committed by Petr Mladek

printk: Make static printk buffers available to nbcon

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: default avatarJohn Ogness <john.ogness@linutronix.de>
Reviewed-by: default avatarPetr Mladek <pmladek@suse.com>
Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20230916192007.608398-4-john.ogness@linutronix.de
parent 3a5bb251
...@@ -86,6 +86,8 @@ static inline void nbcon_cleanup(struct console *con) { } ...@@ -86,6 +86,8 @@ static inline void nbcon_cleanup(struct console *con) { }
#endif /* CONFIG_PRINTK */ #endif /* CONFIG_PRINTK */
extern struct printk_buffers printk_shared_pbufs;
/** /**
* struct printk_buffers - Buffers to read/format/output printk messages. * struct printk_buffers - Buffers to read/format/output printk messages.
* @outbuf: After formatting, contains text to output. * @outbuf: After formatting, contains text to output.
......
...@@ -2846,6 +2846,13 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, ...@@ -2846,6 +2846,13 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq,
return true; return true;
} }
/*
* 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 * Print one record for the given console. The record printed is whatever
* record is the next available record for the given console. * record is the next available record for the given console.
...@@ -2863,12 +2870,10 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, ...@@ -2863,12 +2870,10 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq,
*/ */
static bool console_emit_next_record(struct console *con, bool *handover, int cookie) 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; 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 = { struct printk_message pmsg = {
.pbufs = &pbufs, .pbufs = &printk_shared_pbufs,
}; };
unsigned long flags; unsigned long flags;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment