[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20231205074557.GM5169@atomide.com>
Date: Tue, 5 Dec 2023 09:45:57 +0200
From: Tony Lindgren <tony@...mide.com>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Jiri Slaby <jirislaby@...nel.org>,
Petr Mladek <pmladek@...e.com>,
Steven Rostedt <rostedt@...dmis.org>,
John Ogness <john.ogness@...utronix.de>,
Sergey Senozhatsky <senozhatsky@...omium.org>
Cc: "David S . Miller" <davem@...emloft.net>,
Andy Shevchenko <andriy.shevchenko@...el.com>,
Dhruva Gole <d-gole@...com>,
Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>,
Johan Hovold <johan@...nel.org>,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
Vignesh Raghavendra <vigneshr@...com>,
linux-kernel@...r.kernel.org, linux-serial@...r.kernel.org
Subject: Re: [PATCH v4 0/4] Add support for DEVNAME:0.0 style hardware based
addressing
* Tony Lindgren <tony@...mide.com> [700101 02:00]:
> We also prepare the serial core to handle the ttyS related quirks done
> in console_setup() to prepare things for eventually dropping the parsing
> from console_setup(). This can only happen after further changes to
> register_console().
Petr FYI, so for dropping the console_setup() parsing, below is a hack
patch to see what goes wrong in register_console() if you have some ideas
on how to handle this.
We end up with the console device backed up seria8250 instead of ttyS0,
and earlycon won't get properly disabled. And of course other consoles
beyond ttyS need to be also considered.
Regards,
Tony
8< ----------------------
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2438,9 +2438,7 @@ __setup("console_msg_format=", console_msg_format_setup);
*/
static int __init console_setup(char *str)
{
- char buf[sizeof(console_cmdline[0].name) + 4]; /* 4 for "ttyS" */
- char *s, *options, *brl_options = NULL;
- int idx;
+ char *brl_options = NULL;
/*
* console="" or console=null have been suggested as a way to
@@ -2459,32 +2457,9 @@ static int __init console_setup(char *str)
if (console_opt_save(str, brl_options))
return 1;
- /*
- * Decode str into name, index, options.
- */
- if (str[0] >= '0' && str[0] <= '9') {
- strcpy(buf, "ttyS");
- strncpy(buf + 4, str, sizeof(buf) - 5);
- } else {
- strncpy(buf, str, sizeof(buf) - 1);
- }
- buf[sizeof(buf) - 1] = 0;
- options = strchr(str, ',');
- if (options)
- *(options++) = 0;
-#ifdef __sparc__
- if (!strcmp(str, "ttya"))
- strcpy(buf, "ttyS0");
- if (!strcmp(str, "ttyb"))
- strcpy(buf, "ttyS1");
-#endif
- for (s = buf; *s; s++)
- if (isdigit(*s) || *s == ',')
- break;
- idx = simple_strtoul(s, NULL, 10);
- *s = 0;
+ /* Indicate register_console() a console was specified */
+ console_set_on_cmdline = 1;
- __add_preferred_console(buf, idx, options, brl_options, true);
return 1;
}
__setup("console=", console_setup);
@@ -3476,7 +3451,7 @@ void register_console(struct console *newcon)
* Note that a console with tty binding will have CON_CONSDEV
* flag set and will be first in the list.
*/
- if (preferred_console < 0) {
+ if (preferred_console < 0 && !console_set_on_cmdline) {
if (hlist_empty(&console_list) || !console_first()->device ||
console_first()->flags & CON_BOOT) {
try_enable_default_console(newcon);
Powered by blists - more mailing lists