* [PATCH v4 0/4] Fixes for console command line ordering
@ 2024-06-20 12:45 Tony Lindgren
2024-06-20 12:45 ` [PATCH v4 1/4] printk: Revert add_preferred_console_match() related commits Tony Lindgren
` (4 more replies)
0 siblings, 5 replies; 14+ messages in thread
From: Tony Lindgren @ 2024-06-20 12:45 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby, Petr Mladek, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren
Cc: Ilpo Järvinen, linux-serial, Tony Lindgren, linux-kernel
Hi,
Recent changes to add support for DEVNAME:0.0 style consoles caused a
regression with the preferred console order where the last console on
the kernel command line is no longer the preferred console.
The following four changes fix the issue using Petr's suggestion that
does not involve calling __add_preferred_console() later on again, and
adds the deferred consoles to the console_cmdline[] directly to be
updated when the console is ready.
We revert the earlier printk related changes, and then add back the
DEVNAME:0.0 functionality based on Petr's code snippet. And we end up
reducing the code quite a bit too this way.
And we also revert all the unusable serial core console quirk handling,
it does not do anything for the legacy "ttyS" named consoles. And then
we add a minimal serial_base_match_and_update_preferred_console().
The reason we want DEVNAME:0.0 style consoles is it helps addressing the
console based on the connected serial port controller device rather than
using the hardcoded ttyS addressing. And that helps with issues related
to the console moving around after togging the HSUART option in the BIOS,
or when new ports are enabled in devicetree and aliases are not updated.
Regards,
Tony
Changes since v3:
- Revert the unusable serial core console quirk handling
- Add a minimal patch for serial_base_match_and_update_preferred_console()
Changes since v2:
- Use match_devname_and_update_preferred_console() naming and update
the comments
- Add a patch to rename the serial functions to use match and update
naming
- Use ttyname instad of chardev in console_setup()
- Split variables per-line in console_setup()
- Initialize idx to -1 for devname in console_setup()
- Add pr_info() statement when a preferred console is associated with
a devname
Changes since v1:
- Revert the problem causing printk changes and switch to using the
solution based on Petr's suggestion and code snippet
Tony Lindgren (4):
printk: Revert add_preferred_console_match() related commits
printk: Add match_devname_and_update_preferred_console()
serial: core: Revert unusable console quirk handling
serial: core: Add serial_base_match_and_update_preferred_console()
drivers/tty/serial/8250/8250_core.c | 5 -
drivers/tty/serial/serial_base.h | 22 +---
drivers/tty/serial/serial_base_bus.c | 116 +++------------------
drivers/tty/serial/serial_core.c | 2 +-
include/linux/printk.h | 5 +-
kernel/printk/Makefile | 2 +-
kernel/printk/conopt.c | 146 ---------------------------
kernel/printk/console_cmdline.h | 7 +-
kernel/printk/printk.c | 122 ++++++++++++++++------
9 files changed, 112 insertions(+), 315 deletions(-)
delete mode 100644 kernel/printk/conopt.c
base-commit: 6ba59ff4227927d3a8530fc2973b80e94b54d58f
--
2.45.2
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v4 1/4] printk: Revert add_preferred_console_match() related commits
2024-06-20 12:45 [PATCH v4 0/4] Fixes for console command line ordering Tony Lindgren
@ 2024-06-20 12:45 ` Tony Lindgren
2024-06-20 12:45 ` [PATCH v4 2/4] printk: Add match_devname_and_update_preferred_console() Tony Lindgren
` (3 subsequent siblings)
4 siblings, 0 replies; 14+ messages in thread
From: Tony Lindgren @ 2024-06-20 12:45 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby, Petr Mladek, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Tony Lindgren, Andy Shevchenko
Cc: Ilpo Järvinen, linux-serial, Tony Lindgren, linux-kernel
Recent changes to allow using DEVNAME:0.0 style console names caused a
regression to the kernel command line handling for the console options.
The last preferred console added gets used for init. This is documented
in the comments for add_preferred_console(). Now the kernel command line
options for console=ttyS0,115200 console=tty0 are wrongly handled and
cause the /dev/console to be associated with ttyS0 instead of tty0.
This happens because we are calling __add_preferred_console() later on
from serial8250_isa_init_ports() after console_setup() and the console
gets treated as the last added preferred console. As the DEVNAME:0.0 style
console device is not known at console_setup() time, I added a call to
__add_preferred_console() later on when the console is ready.
To fix the issue, let's revert the printk related commits:
f03e8c1060f8 ("printk: Save console options for add_preferred_console_match()")
b73c9cbe4f1f ("printk: Flag register_console() if console is set on command line")
8a831c584e6e ("printk: Don't try to parse DEVNAME:0.0 console options")
We need to also drop the call for add_preferred_console_match() from
serial_base_add_one_prefcon() added by commit 787a1cabac01 ("serial: core:
Add support for DEVNAME:0.0 style naming for kernel console").
Petr has suggested a better way to handle the deferred consoles that does
not rely on calling __add_preferred_console() again.
Reported-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/linux-serial/ZlC6_Um4P4b-_WQE@pathway.suse.cz/
Fixes: f03e8c1060f8 ("printk: Save console options for add_preferred_console_match()")
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Tony Lindgren <tony.lindgren@linux.intel.com>
---
drivers/tty/serial/serial_base_bus.c | 8 +-
include/linux/printk.h | 3 -
kernel/printk/Makefile | 2 +-
kernel/printk/conopt.c | 146 ---------------------------
kernel/printk/console_cmdline.h | 6 --
kernel/printk/printk.c | 23 +----
6 files changed, 6 insertions(+), 182 deletions(-)
delete mode 100644 kernel/printk/conopt.c
diff --git a/drivers/tty/serial/serial_base_bus.c b/drivers/tty/serial/serial_base_bus.c
index 73c6ee540c83..5ebacb982f9e 100644
--- a/drivers/tty/serial/serial_base_bus.c
+++ b/drivers/tty/serial/serial_base_bus.c
@@ -210,13 +210,7 @@ void serial_base_port_device_remove(struct serial_port_device *port_dev)
static int serial_base_add_one_prefcon(const char *match, const char *dev_name,
int port_id)
{
- int ret;
-
- ret = add_preferred_console_match(match, dev_name, port_id);
- if (ret == -ENOENT)
- return 0;
-
- return ret;
+ return 0;
}
#ifdef __sparc__
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 40afab23881a..65c5184470f1 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -60,9 +60,6 @@ static inline const char *printk_skip_headers(const char *buffer)
#define CONSOLE_LOGLEVEL_DEFAULT CONFIG_CONSOLE_LOGLEVEL_DEFAULT
#define CONSOLE_LOGLEVEL_QUIET CONFIG_CONSOLE_LOGLEVEL_QUIET
-int add_preferred_console_match(const char *match, const char *name,
- const short idx);
-
extern int console_printk[];
#define console_loglevel (console_printk[0])
diff --git a/kernel/printk/Makefile b/kernel/printk/Makefile
index 040fe7d1eda2..39a2b61c7232 100644
--- a/kernel/printk/Makefile
+++ b/kernel/printk/Makefile
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-2.0-only
-obj-y = printk.o conopt.o
+obj-y = printk.o
obj-$(CONFIG_PRINTK) += printk_safe.o nbcon.o
obj-$(CONFIG_A11Y_BRAILLE_CONSOLE) += braille.o
obj-$(CONFIG_PRINTK_INDEX) += index.o
diff --git a/kernel/printk/conopt.c b/kernel/printk/conopt.c
deleted file mode 100644
index 9d507bac3657..000000000000
--- a/kernel/printk/conopt.c
+++ /dev/null
@@ -1,146 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Kernel command line console options for hardware based addressing
- *
- * Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
- * Author: Tony Lindgren <tony@atomide.com>
- */
-
-#include <linux/console.h>
-#include <linux/init.h>
-#include <linux/string.h>
-#include <linux/types.h>
-
-#include <asm/errno.h>
-
-#include "console_cmdline.h"
-
-/*
- * Allow longer DEVNAME:0.0 style console naming such as abcd0000.serial:0.0
- * in addition to the legacy ttyS0 style naming.
- */
-#define CONSOLE_NAME_MAX 32
-
-#define CONSOLE_OPT_MAX 16
-#define CONSOLE_BRL_OPT_MAX 16
-
-struct console_option {
- char name[CONSOLE_NAME_MAX];
- char opt[CONSOLE_OPT_MAX];
- char brl_opt[CONSOLE_BRL_OPT_MAX];
- u8 has_brl_opt:1;
-};
-
-/* Updated only at console_setup() time, no locking needed */
-static struct console_option conopt[MAX_CMDLINECONSOLES];
-
-/**
- * console_opt_save - Saves kernel command line console option for driver use
- * @str: Kernel command line console name and option
- * @brl_opt: Braille console options
- *
- * Saves a kernel command line console option for driver subsystems to use for
- * adding a preferred console during init. Called from console_setup() only.
- *
- * Return: 0 on success, negative error code on failure.
- */
-int __init console_opt_save(const char *str, const char *brl_opt)
-{
- struct console_option *con;
- size_t namelen, optlen;
- const char *opt;
- int i;
-
- namelen = strcspn(str, ",");
- if (namelen == 0 || namelen >= CONSOLE_NAME_MAX)
- return -EINVAL;
-
- opt = str + namelen;
- if (*opt == ',')
- opt++;
-
- optlen = strlen(opt);
- if (optlen >= CONSOLE_OPT_MAX)
- return -EINVAL;
-
- for (i = 0; i < MAX_CMDLINECONSOLES; i++) {
- con = &conopt[i];
-
- if (con->name[0]) {
- if (!strncmp(str, con->name, namelen))
- return 0;
- continue;
- }
-
- /*
- * The name isn't terminated, only opt is. Empty opt is fine,
- * but brl_opt can be either empty or NULL. For more info, see
- * _braille_console_setup().
- */
- strscpy(con->name, str, namelen + 1);
- strscpy(con->opt, opt, CONSOLE_OPT_MAX);
- if (brl_opt) {
- strscpy(con->brl_opt, brl_opt, CONSOLE_BRL_OPT_MAX);
- con->has_brl_opt = 1;
- }
-
- return 0;
- }
-
- return -ENOMEM;
-}
-
-static struct console_option *console_opt_find(const char *name)
-{
- struct console_option *con;
- int i;
-
- for (i = 0; i < MAX_CMDLINECONSOLES; i++) {
- con = &conopt[i];
- if (!strcmp(name, con->name))
- return con;
- }
-
- return NULL;
-}
-
-/**
- * add_preferred_console_match - Adds a preferred console if a match is found
- * @match: Expected console on kernel command line, such as console=DEVNAME:0.0
- * @name: Name of the console character device to add such as ttyS
- * @idx: Index for the console
- *
- * Allows driver subsystems to add a console after translating the command
- * line name to the character device name used for the console. Options are
- * added automatically based on the kernel command line. Duplicate preferred
- * consoles are ignored by __add_preferred_console().
- *
- * Return: 0 on success, negative error code on failure.
- */
-int add_preferred_console_match(const char *match, const char *name,
- const short idx)
-{
- struct console_option *con;
- char *brl_opt = NULL;
-
- if (!match || !strlen(match) || !name || !strlen(name) ||
- idx < 0)
- return -EINVAL;
-
- con = console_opt_find(match);
- if (!con)
- return -ENOENT;
-
- /*
- * See __add_preferred_console(). It checks for NULL brl_options to set
- * the preferred_console flag. Empty brl_opt instead of NULL leads into
- * the preferred_console flag not set, and CON_CONSDEV not being set,
- * and the boot console won't get disabled at the end of console_setup().
- */
- if (con->has_brl_opt)
- brl_opt = con->brl_opt;
-
- console_opt_add_preferred_console(name, idx, con->opt, brl_opt);
-
- return 0;
-}
diff --git a/kernel/printk/console_cmdline.h b/kernel/printk/console_cmdline.h
index a125e0235589..3ca74ad391d6 100644
--- a/kernel/printk/console_cmdline.h
+++ b/kernel/printk/console_cmdline.h
@@ -2,12 +2,6 @@
#ifndef _CONSOLE_CMDLINE_H
#define _CONSOLE_CMDLINE_H
-#define MAX_CMDLINECONSOLES 8
-
-int console_opt_save(const char *str, const char *brl_opt);
-int console_opt_add_preferred_console(const char *name, const short idx,
- char *options, char *brl_options);
-
struct console_cmdline
{
char name[16]; /* Name of the driver */
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 420fd310129d..dddb15f48d59 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -383,6 +383,9 @@ static int console_locked;
/*
* Array of consoles built from command line options (console=)
*/
+
+#define MAX_CMDLINECONSOLES 8
+
static struct console_cmdline console_cmdline[MAX_CMDLINECONSOLES];
static int preferred_console = -1;
@@ -2500,17 +2503,6 @@ static int __init console_setup(char *str)
if (_braille_console_setup(&str, &brl_options))
return 1;
- /* Save the console for driver subsystem use */
- if (console_opt_save(str, brl_options))
- return 1;
-
- /* Flag register_console() to not call try_enable_default_console() */
- console_set_on_cmdline = 1;
-
- /* Don't attempt to parse a DEVNAME:0.0 style console */
- if (strchr(str, ':'))
- return 1;
-
/*
* Decode str into name, index, options.
*/
@@ -2541,13 +2533,6 @@ static int __init console_setup(char *str)
}
__setup("console=", console_setup);
-/* Only called from add_preferred_console_match() */
-int console_opt_add_preferred_console(const char *name, const short idx,
- char *options, char *brl_options)
-{
- return __add_preferred_console(name, idx, options, brl_options, true);
-}
-
/**
* add_preferred_console - add a device to the list of preferred consoles.
* @name: device name
@@ -3522,7 +3507,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 && !console_set_on_cmdline) {
+ if (preferred_console < 0) {
if (hlist_empty(&console_list) || !console_first()->device ||
console_first()->flags & CON_BOOT) {
try_enable_default_console(newcon);
--
2.45.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 2/4] printk: Add match_devname_and_update_preferred_console()
2024-06-20 12:45 [PATCH v4 0/4] Fixes for console command line ordering Tony Lindgren
2024-06-20 12:45 ` [PATCH v4 1/4] printk: Revert add_preferred_console_match() related commits Tony Lindgren
@ 2024-06-20 12:45 ` Tony Lindgren
2024-06-20 12:45 ` [PATCH v4 3/4] serial: core: Revert unusable console quirk handling Tony Lindgren
` (2 subsequent siblings)
4 siblings, 0 replies; 14+ messages in thread
From: Tony Lindgren @ 2024-06-20 12:45 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby, Petr Mladek, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Tony Lindgren, Andy Shevchenko
Cc: Ilpo Järvinen, linux-serial, Tony Lindgren, linux-kernel
Let's add match_devname_and_update_preferred_console() for driver
subsystems to call during init when the console is ready, and it's
character device name is known. For now, we use it only for the serial
layer to allow console=DEVNAME:0.0 style hardware based addressing for
consoles.
The earlier attempt on doing this caused a regression with the kernel
command line console order as it added calling __add_preferred_console()
again later on during init. A better approach was suggested by Petr where
we add the deferred console to the console_cmdline[] and update it later
on when the console is ready.
Suggested-by: Petr Mladek <pmladek@suse.com>
Co-developed-by: Petr Mladek <pmladek@suse.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Tested-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Tony Lindgren <tony.lindgren@linux.intel.com>
---
drivers/tty/serial/serial_base_bus.c | 8 ++-
include/linux/printk.h | 4 ++
kernel/printk/console_cmdline.h | 1 +
kernel/printk/printk.c | 103 +++++++++++++++++++++++----
4 files changed, 100 insertions(+), 16 deletions(-)
diff --git a/drivers/tty/serial/serial_base_bus.c b/drivers/tty/serial/serial_base_bus.c
index 5ebacb982f9e..2cf86f1ff298 100644
--- a/drivers/tty/serial/serial_base_bus.c
+++ b/drivers/tty/serial/serial_base_bus.c
@@ -210,7 +210,13 @@ void serial_base_port_device_remove(struct serial_port_device *port_dev)
static int serial_base_add_one_prefcon(const char *match, const char *dev_name,
int port_id)
{
- return 0;
+ int ret;
+
+ ret = match_devname_and_update_preferred_console(match, dev_name, port_id);
+ if (ret == -ENOENT)
+ return 0;
+
+ return ret;
}
#ifdef __sparc__
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 65c5184470f1..7239976698e4 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -60,6 +60,10 @@ static inline const char *printk_skip_headers(const char *buffer)
#define CONSOLE_LOGLEVEL_DEFAULT CONFIG_CONSOLE_LOGLEVEL_DEFAULT
#define CONSOLE_LOGLEVEL_QUIET CONFIG_CONSOLE_LOGLEVEL_QUIET
+int match_devname_and_update_preferred_console(const char *match,
+ const char *name,
+ const short idx);
+
extern int console_printk[];
#define console_loglevel (console_printk[0])
diff --git a/kernel/printk/console_cmdline.h b/kernel/printk/console_cmdline.h
index 3ca74ad391d6..0ab573b6d4dc 100644
--- a/kernel/printk/console_cmdline.h
+++ b/kernel/printk/console_cmdline.h
@@ -6,6 +6,7 @@ struct console_cmdline
{
char name[16]; /* Name of the driver */
int index; /* Minor dev. to use */
+ char devname[32]; /* DEVNAME:0.0 style device name */
bool user_specified; /* Specified by command line vs. platform */
char *options; /* Options for the driver */
#ifdef CONFIG_A11Y_BRAILLE_CONSOLE
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index dddb15f48d59..7d91593f0ecf 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2429,18 +2429,23 @@ static void set_user_specified(struct console_cmdline *c, bool user_specified)
console_set_on_cmdline = 1;
}
-static int __add_preferred_console(const char *name, const short idx, char *options,
+static int __add_preferred_console(const char *name, const short idx,
+ const char *devname, char *options,
char *brl_options, bool user_specified)
{
struct console_cmdline *c;
int i;
+ if (!name && !devname)
+ return -EINVAL;
+
/*
* We use a signed short index for struct console for device drivers to
* indicate a not yet assigned index or port. However, a negative index
- * value is not valid for preferred console.
+ * value is not valid when the console name and index are defined on
+ * the command line.
*/
- if (idx < 0)
+ if (name && idx < 0)
return -EINVAL;
/*
@@ -2448,9 +2453,10 @@ static int __add_preferred_console(const char *name, const short idx, char *opti
* if we have a slot free.
*/
for (i = 0, c = console_cmdline;
- i < MAX_CMDLINECONSOLES && c->name[0];
+ i < MAX_CMDLINECONSOLES && (c->name[0] || c->devname[0]);
i++, c++) {
- if (strcmp(c->name, name) == 0 && c->index == idx) {
+ if ((name && strcmp(c->name, name) == 0 && c->index == idx) ||
+ (devname && strcmp(c->devname, devname) == 0)) {
if (!brl_options)
preferred_console = i;
set_user_specified(c, user_specified);
@@ -2461,7 +2467,10 @@ static int __add_preferred_console(const char *name, const short idx, char *opti
return -E2BIG;
if (!brl_options)
preferred_console = i;
- strscpy(c->name, name, sizeof(c->name));
+ if (name)
+ strscpy(c->name, name);
+ if (devname)
+ strscpy(c->devname, devname);
c->options = options;
set_user_specified(c, user_specified);
braille_set_options(c, brl_options);
@@ -2486,8 +2495,13 @@ __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;
+ static_assert(sizeof(console_cmdline[0].devname) >= sizeof(console_cmdline[0].name) + 4);
+ char buf[sizeof(console_cmdline[0].devname)];
+ char *brl_options = NULL;
+ char *ttyname = NULL;
+ char *devname = NULL;
+ char *options;
+ char *s;
int idx;
/*
@@ -2496,17 +2510,23 @@ static int __init console_setup(char *str)
* for exactly this purpose.
*/
if (str[0] == 0 || strcmp(str, "null") == 0) {
- __add_preferred_console("ttynull", 0, NULL, NULL, true);
+ __add_preferred_console("ttynull", 0, NULL, NULL, NULL, true);
return 1;
}
if (_braille_console_setup(&str, &brl_options))
return 1;
+ /* For a DEVNAME:0.0 style console the character device is unknown early */
+ if (strchr(str, ':'))
+ devname = buf;
+ else
+ ttyname = buf;
+
/*
* Decode str into name, index, options.
*/
- if (isdigit(str[0]))
+ if (ttyname && isdigit(str[0]))
scnprintf(buf, sizeof(buf), "ttyS%s", str);
else
strscpy(buf, str);
@@ -2523,12 +2543,18 @@ static int __init console_setup(char *str)
#endif
for (s = buf; *s; s++)
- if (isdigit(*s) || *s == ',')
+ if ((ttyname && isdigit(*s)) || *s == ',')
break;
- idx = simple_strtoul(s, NULL, 10);
+
+ /* @idx will get defined when devname matches. */
+ if (devname)
+ idx = -1;
+ else
+ idx = simple_strtoul(s, NULL, 10);
+
*s = 0;
- __add_preferred_console(buf, idx, options, brl_options, true);
+ __add_preferred_console(ttyname, idx, devname, options, brl_options, true);
return 1;
}
__setup("console=", console_setup);
@@ -2548,7 +2574,51 @@ __setup("console=", console_setup);
*/
int add_preferred_console(const char *name, const short idx, char *options)
{
- return __add_preferred_console(name, idx, options, NULL, false);
+ return __add_preferred_console(name, idx, NULL, options, NULL, false);
+}
+
+/**
+ * match_devname_and_update_preferred_console - Update a preferred console
+ * when matching devname is found.
+ * @devname: DEVNAME:0.0 style device name
+ * @name: Name of the corresponding console driver, e.g. "ttyS"
+ * @idx: Console index, e.g. port number.
+ *
+ * The function checks whether a device with the given @devname is
+ * preferred via the console=DEVNAME:0.0 command line option.
+ * It fills the missing console driver name and console index
+ * so that a later register_console() call could find (match)
+ * and enable this device.
+ *
+ * It might be used when a driver subsystem initializes particular
+ * devices with already known DEVNAME:0.0 style names. And it
+ * could predict which console driver name and index this device
+ * would later get associated with.
+ *
+ * Return: 0 on success, negative error code on failure.
+ */
+int match_devname_and_update_preferred_console(const char *devname,
+ const char *name,
+ const short idx)
+{
+ struct console_cmdline *c = console_cmdline;
+ int i;
+
+ if (!devname || !strlen(devname) || !name || !strlen(name) || idx < 0)
+ return -EINVAL;
+
+ for (i = 0; i < MAX_CMDLINECONSOLES && (c->name[0] || c->devname[0]);
+ i++, c++) {
+ if (!strcmp(devname, c->devname)) {
+ pr_info("associate the preferred console \"%s\" with \"%s%d\"\n",
+ devname, name, idx);
+ strscpy(c->name, name);
+ c->index = idx;
+ return 0;
+ }
+ }
+
+ return -ENOENT;
}
bool console_suspend_enabled = true;
@@ -3318,8 +3388,11 @@ static int try_enable_preferred_console(struct console *newcon,
int i, err;
for (i = 0, c = console_cmdline;
- i < MAX_CMDLINECONSOLES && c->name[0];
+ i < MAX_CMDLINECONSOLES && (c->name[0] || c->devname[0]);
i++, c++) {
+ /* Console not yet initialized? */
+ if (!c->name[0])
+ continue;
if (c->user_specified != user_specified)
continue;
if (!newcon->match ||
--
2.45.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 3/4] serial: core: Revert unusable console quirk handling
2024-06-20 12:45 [PATCH v4 0/4] Fixes for console command line ordering Tony Lindgren
2024-06-20 12:45 ` [PATCH v4 1/4] printk: Revert add_preferred_console_match() related commits Tony Lindgren
2024-06-20 12:45 ` [PATCH v4 2/4] printk: Add match_devname_and_update_preferred_console() Tony Lindgren
@ 2024-06-20 12:45 ` Tony Lindgren
2024-06-21 12:15 ` Petr Mladek
2024-06-20 12:45 ` [PATCH v4 4/4] serial: core: Add serial_base_match_and_update_preferred_console() Tony Lindgren
2024-06-21 14:44 ` [PATCH v4 0/4] Fixes for console command line ordering Petr Mladek
4 siblings, 1 reply; 14+ messages in thread
From: Tony Lindgren @ 2024-06-20 12:45 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby, Petr Mladek, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Tony Lindgren, Andy Shevchenko
Cc: Ilpo Järvinen, linux-serial, Tony Lindgren, linux-kernel
There is no point of trying to handle the console quirks in the serial
core instead of console_setup() currently.
With the console_setup() related changes, we are now deferring the
DEVNAME:0.0 style consoles based on the ":" naming only. So the serial
core console quirk handling would not do anything for the "ttyS" named
consoles as they are not deferred.
Also the earlier approach would have depended on further changes to be
able to drop the serial port quirk handling from console_setup().
Let's revert the following console quirk handling related serial core
commits:
b20172ca6bf4 ("serial: core: Fix ifdef for serial base console functions")
4547cd76f08a ("serial: 8250: Fix add preferred console for serial8250_isa_init_ports()")
a8b04cfe7dad ("serial: 8250: Add preferred console in serial8250_isa_init_ports()")
a0f32e2dd998 ("serial: core: Handle serial console options")
787a1cabac01 ("serial: core: Add support for DEVNAME:0.0 style naming for kernel console")
Once the console quirk handling is gone, we add back the DEVNAME:0.0
functionality with a minimal patch.
Suggested-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/linux-serial/ZnGQ8JAu2OQf0GX8@pathway.suse.cz/
Signed-off-by: Tony Lindgren <tony.lindgren@linux.intel.com>
---
drivers/tty/serial/8250/8250_core.c | 5 --
drivers/tty/serial/serial_base.h | 30 -------
drivers/tty/serial/serial_base_bus.c | 129 ---------------------------
drivers/tty/serial/serial_core.c | 4 -
4 files changed, 168 deletions(-)
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index ff15022369e4..b0adafc44747 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -15,7 +15,6 @@
*/
#include <linux/acpi.h>
-#include <linux/cleanup.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/ioport.h>
@@ -42,8 +41,6 @@
#include <asm/irq.h>
-#include "../serial_base.h" /* For serial_base_add_isa_preferred_console() */
-
#include "8250.h"
/*
@@ -563,8 +560,6 @@ static void __init serial8250_isa_init_ports(void)
port->irqflags |= irqflag;
if (serial8250_isa_config != NULL)
serial8250_isa_config(i, &up->port, &up->capabilities);
-
- serial_base_add_isa_preferred_console(serial8250_reg.dev_name, i);
}
}
diff --git a/drivers/tty/serial/serial_base.h b/drivers/tty/serial/serial_base.h
index 743a72ac34f3..b6c38d2edfd4 100644
--- a/drivers/tty/serial/serial_base.h
+++ b/drivers/tty/serial/serial_base.h
@@ -49,33 +49,3 @@ void serial_ctrl_unregister_port(struct uart_driver *drv, struct uart_port *port
int serial_core_register_port(struct uart_driver *drv, struct uart_port *port);
void serial_core_unregister_port(struct uart_driver *drv, struct uart_port *port);
-
-#ifdef CONFIG_SERIAL_CORE_CONSOLE
-
-int serial_base_add_preferred_console(struct uart_driver *drv,
- struct uart_port *port);
-
-#else
-
-static inline
-int serial_base_add_preferred_console(struct uart_driver *drv,
- struct uart_port *port)
-{
- return 0;
-}
-
-#endif
-
-#ifdef CONFIG_SERIAL_8250_CONSOLE
-
-int serial_base_add_isa_preferred_console(const char *name, int idx);
-
-#else
-
-static inline
-int serial_base_add_isa_preferred_console(const char *name, int idx)
-{
- return 0;
-}
-
-#endif
diff --git a/drivers/tty/serial/serial_base_bus.c b/drivers/tty/serial/serial_base_bus.c
index 2cf86f1ff298..4df2a4b10445 100644
--- a/drivers/tty/serial/serial_base_bus.c
+++ b/drivers/tty/serial/serial_base_bus.c
@@ -8,7 +8,6 @@
* The serial core bus manages the serial core controller instances.
*/
-#include <linux/cleanup.h>
#include <linux/container_of.h>
#include <linux/device.h>
#include <linux/idr.h>
@@ -205,134 +204,6 @@ void serial_base_port_device_remove(struct serial_port_device *port_dev)
put_device(&port_dev->dev);
}
-#ifdef CONFIG_SERIAL_CORE_CONSOLE
-
-static int serial_base_add_one_prefcon(const char *match, const char *dev_name,
- int port_id)
-{
- int ret;
-
- ret = match_devname_and_update_preferred_console(match, dev_name, port_id);
- if (ret == -ENOENT)
- return 0;
-
- return ret;
-}
-
-#ifdef __sparc__
-
-/* Handle Sparc ttya and ttyb options as done in console_setup() */
-static int serial_base_add_sparc_console(const char *dev_name, int idx)
-{
- const char *name;
-
- switch (idx) {
- case 0:
- name = "ttya";
- break;
- case 1:
- name = "ttyb";
- break;
- default:
- return 0;
- }
-
- return serial_base_add_one_prefcon(name, dev_name, idx);
-}
-
-#else
-
-static inline int serial_base_add_sparc_console(const char *dev_name, int idx)
-{
- return 0;
-}
-
-#endif
-
-static int serial_base_add_prefcon(const char *name, int idx)
-{
- const char *char_match __free(kfree) = NULL;
- const char *nmbr_match __free(kfree) = NULL;
- int ret;
-
- /* Handle ttyS specific options */
- if (strstarts(name, "ttyS")) {
- /* No name, just a number */
- nmbr_match = kasprintf(GFP_KERNEL, "%i", idx);
- if (!nmbr_match)
- return -ENODEV;
-
- ret = serial_base_add_one_prefcon(nmbr_match, name, idx);
- if (ret)
- return ret;
-
- /* Sparc ttya and ttyb */
- ret = serial_base_add_sparc_console(name, idx);
- if (ret)
- return ret;
- }
-
- /* Handle the traditional character device name style console=ttyS0 */
- char_match = kasprintf(GFP_KERNEL, "%s%i", name, idx);
- if (!char_match)
- return -ENOMEM;
-
- return serial_base_add_one_prefcon(char_match, name, idx);
-}
-
-/**
- * serial_base_add_preferred_console - Adds a preferred console
- * @drv: Serial port device driver
- * @port: Serial port instance
- *
- * Tries to add a preferred console for a serial port if specified in the
- * kernel command line. Supports both the traditional character device such
- * as console=ttyS0, and a hardware addressing based console=DEVNAME:0.0
- * style name.
- *
- * Translates the kernel command line option using a hardware based addressing
- * console=DEVNAME:0.0 to the serial port character device such as ttyS0.
- * Cannot be called early for ISA ports, depends on struct device.
- *
- * Note that duplicates are ignored by add_preferred_console().
- *
- * Return: 0 on success, negative error code on failure.
- */
-int serial_base_add_preferred_console(struct uart_driver *drv,
- struct uart_port *port)
-{
- const char *port_match __free(kfree) = NULL;
- int ret;
-
- ret = serial_base_add_prefcon(drv->dev_name, port->line);
- if (ret)
- return ret;
-
- port_match = kasprintf(GFP_KERNEL, "%s:%i.%i", dev_name(port->dev),
- port->ctrl_id, port->port_id);
- if (!port_match)
- return -ENOMEM;
-
- /* Translate a hardware addressing style console=DEVNAME:0.0 */
- return serial_base_add_one_prefcon(port_match, drv->dev_name, port->line);
-}
-
-#endif
-
-#ifdef CONFIG_SERIAL_8250_CONSOLE
-
-/*
- * Early ISA ports initialize the console before there is no struct device.
- * This should be only called from serial8250_isa_init_preferred_console(),
- * other callers are likely wrong and should rely on earlycon instead.
- */
-int serial_base_add_isa_preferred_console(const char *name, int idx)
-{
- return serial_base_add_prefcon(name, idx);
-}
-
-#endif
-
static int serial_base_init(void)
{
int ret;
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index 0c4d60976663..2a8006e3d687 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -3422,10 +3422,6 @@ int serial_core_register_port(struct uart_driver *drv, struct uart_port *port)
if (ret)
goto err_unregister_ctrl_dev;
- ret = serial_base_add_preferred_console(drv, port);
- if (ret)
- goto err_unregister_port_dev;
-
ret = serial_core_add_one_port(drv, port);
if (ret)
goto err_unregister_port_dev;
--
2.45.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 4/4] serial: core: Add serial_base_match_and_update_preferred_console()
2024-06-20 12:45 [PATCH v4 0/4] Fixes for console command line ordering Tony Lindgren
` (2 preceding siblings ...)
2024-06-20 12:45 ` [PATCH v4 3/4] serial: core: Revert unusable console quirk handling Tony Lindgren
@ 2024-06-20 12:45 ` Tony Lindgren
2024-06-21 12:37 ` Petr Mladek
2024-06-21 14:44 ` [PATCH v4 0/4] Fixes for console command line ordering Petr Mladek
4 siblings, 1 reply; 14+ messages in thread
From: Tony Lindgren @ 2024-06-20 12:45 UTC (permalink / raw)
To: Greg Kroah-Hartman, Jiri Slaby, Petr Mladek, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren
Cc: Ilpo Järvinen, linux-serial, Tony Lindgren, linux-kernel
Let's add serial_base_match_and_update_preferred_console() for consoles
using DEVNAME:0.0 style naming.
The earlier approach to add it caused issues in the kernel command line
ordering as we were calling __add_preferred_console() again for the
deferred consoles.
Signed-off-by: Tony Lindgren <tony.lindgren@linux.intel.com>
---
drivers/tty/serial/serial_base.h | 16 ++++++++++++
drivers/tty/serial/serial_base_bus.c | 37 ++++++++++++++++++++++++++++
drivers/tty/serial/serial_core.c | 4 +++
3 files changed, 57 insertions(+)
diff --git a/drivers/tty/serial/serial_base.h b/drivers/tty/serial/serial_base.h
index b6c38d2edfd4..0d50db5b660b 100644
--- a/drivers/tty/serial/serial_base.h
+++ b/drivers/tty/serial/serial_base.h
@@ -49,3 +49,19 @@ void serial_ctrl_unregister_port(struct uart_driver *drv, struct uart_port *port
int serial_core_register_port(struct uart_driver *drv, struct uart_port *port);
void serial_core_unregister_port(struct uart_driver *drv, struct uart_port *port);
+
+#ifdef CONFIG_SERIAL_CORE_CONSOLE
+
+int serial_base_match_and_update_preferred_console(struct uart_driver *drv,
+ struct uart_port *port);
+
+#else
+
+static inline
+int serial_base_match_and_update_preferred_console(struct uart_driver *drv,
+ struct uart_port *port)
+{
+ return 0;
+}
+
+#endif
diff --git a/drivers/tty/serial/serial_base_bus.c b/drivers/tty/serial/serial_base_bus.c
index 4df2a4b10445..d822499ba9d6 100644
--- a/drivers/tty/serial/serial_base_bus.c
+++ b/drivers/tty/serial/serial_base_bus.c
@@ -8,6 +8,7 @@
* The serial core bus manages the serial core controller instances.
*/
+#include <linux/cleanup.h>
#include <linux/container_of.h>
#include <linux/device.h>
#include <linux/idr.h>
@@ -204,6 +205,42 @@ void serial_base_port_device_remove(struct serial_port_device *port_dev)
put_device(&port_dev->dev);
}
+#ifdef CONFIG_SERIAL_CORE_CONSOLE
+
+/**
+ * serial_base_match_and_update_preferred_console - Match and update a preferred console
+ * @drv: Serial port device driver
+ * @port: Serial port instance
+ *
+ * Tries to match and update the preferred console for a serial port for
+ * the kernel command line option console=DEVNAME:0.0.
+ *
+ * Cannot be called early for ISA ports, depends on struct device.
+ *
+ * Return: 0 on success, negative error code on failure.
+ */
+int serial_base_match_and_update_preferred_console(struct uart_driver *drv,
+ struct uart_port *port)
+{
+ const char *port_match __free(kfree) = NULL;
+ int ret;
+
+ port_match = kasprintf(GFP_KERNEL, "%s:%d.%d", dev_name(port->dev),
+ port->ctrl_id, port->port_id);
+ if (!port_match)
+ return -ENOMEM;
+
+ ret = match_devname_and_update_preferred_console(port_match,
+ drv->dev_name,
+ port->line);
+ if (ret == -ENOENT)
+ return 0;
+
+ return ret;
+}
+
+#endif
+
static int serial_base_init(void)
{
int ret;
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index 2a8006e3d687..9a18d0b95a41 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -3422,6 +3422,10 @@ int serial_core_register_port(struct uart_driver *drv, struct uart_port *port)
if (ret)
goto err_unregister_ctrl_dev;
+ ret = serial_base_match_and_update_preferred_console(drv, port);
+ if (ret)
+ goto err_unregister_port_dev;
+
ret = serial_core_add_one_port(drv, port);
if (ret)
goto err_unregister_port_dev;
--
2.45.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v4 3/4] serial: core: Revert unusable console quirk handling
2024-06-20 12:45 ` [PATCH v4 3/4] serial: core: Revert unusable console quirk handling Tony Lindgren
@ 2024-06-21 12:15 ` Petr Mladek
0 siblings, 0 replies; 14+ messages in thread
From: Petr Mladek @ 2024-06-21 12:15 UTC (permalink / raw)
To: Tony Lindgren
Cc: Greg Kroah-Hartman, Jiri Slaby, Steven Rostedt, John Ogness,
Sergey Senozhatsky, Tony Lindgren, Andy Shevchenko,
Ilpo Järvinen, linux-serial, linux-kernel
On Thu 2024-06-20 15:45:28, Tony Lindgren wrote:
> There is no point of trying to handle the console quirks in the serial
> core instead of console_setup() currently.
>
> With the console_setup() related changes, we are now deferring the
> DEVNAME:0.0 style consoles based on the ":" naming only. So the serial
> core console quirk handling would not do anything for the "ttyS" named
> consoles as they are not deferred.
>
> Also the earlier approach would have depended on further changes to be
> able to drop the serial port quirk handling from console_setup().
>
> Let's revert the following console quirk handling related serial core
> commits:
>
> b20172ca6bf4 ("serial: core: Fix ifdef for serial base console functions")
> 4547cd76f08a ("serial: 8250: Fix add preferred console for serial8250_isa_init_ports()")
> a8b04cfe7dad ("serial: 8250: Add preferred console in serial8250_isa_init_ports()")
> a0f32e2dd998 ("serial: core: Handle serial console options")
> 787a1cabac01 ("serial: core: Add support for DEVNAME:0.0 style naming for kernel console")
>
> Once the console quirk handling is gone, we add back the DEVNAME:0.0
> functionality with a minimal patch.
>
> Suggested-by: Petr Mladek <pmladek@suse.com>
> Link: https://lore.kernel.org/linux-serial/ZnGQ8JAu2OQf0GX8@pathway.suse.cz/
> Signed-off-by: Tony Lindgren <tony.lindgren@linux.intel.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Best Regards,
Petr
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 4/4] serial: core: Add serial_base_match_and_update_preferred_console()
2024-06-20 12:45 ` [PATCH v4 4/4] serial: core: Add serial_base_match_and_update_preferred_console() Tony Lindgren
@ 2024-06-21 12:37 ` Petr Mladek
2024-06-24 7:21 ` Tony Lindgren
0 siblings, 1 reply; 14+ messages in thread
From: Petr Mladek @ 2024-06-21 12:37 UTC (permalink / raw)
To: Tony Lindgren
Cc: Greg Kroah-Hartman, Jiri Slaby, Steven Rostedt, John Ogness,
Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren,
Ilpo Järvinen, linux-serial, linux-kernel
On Thu 2024-06-20 15:45:29, Tony Lindgren wrote:
> Let's add serial_base_match_and_update_preferred_console() for consoles
> using DEVNAME:0.0 style naming.
>
> The earlier approach to add it caused issues in the kernel command line
> ordering as we were calling __add_preferred_console() again for the
> deferred consoles.
>
> Signed-off-by: Tony Lindgren <tony.lindgren@linux.intel.com>
Looks good and seems to work well:
Reviewed-by: Petr Mladek <pmladek@suse.com>
Tested-by: Petr Mladek <pmladek@suse.com>
See an idea below.
> --- a/drivers/tty/serial/serial_base_bus.c
> +++ b/drivers/tty/serial/serial_base_bus.c
> @@ -204,6 +205,42 @@ void serial_base_port_device_remove(struct serial_port_device *port_dev)
> put_device(&port_dev->dev);
> }
>
> +#ifdef CONFIG_SERIAL_CORE_CONSOLE
> +
> +/**
> + * serial_base_match_and_update_preferred_console - Match and update a preferred console
> + * @drv: Serial port device driver
> + * @port: Serial port instance
> + *
> + * Tries to match and update the preferred console for a serial port for
> + * the kernel command line option console=DEVNAME:0.0.
> + *
> + * Cannot be called early for ISA ports, depends on struct device.
> + *
> + * Return: 0 on success, negative error code on failure.
> + */
> +int serial_base_match_and_update_preferred_console(struct uart_driver *drv,
> + struct uart_port *port)
> +{
> + const char *port_match __free(kfree) = NULL;
> + int ret;
> +
> + port_match = kasprintf(GFP_KERNEL, "%s:%d.%d", dev_name(port->dev),
> + port->ctrl_id, port->port_id);
> + if (!port_match)
> + return -ENOMEM;
The name is going to be compared with:
struct console_cmdline
{
[...]
char devname[32]; /* DEVNAME:0.0 style device name */
It looks like an overkill to allocate such a small buffer. It would
be perfectly fine to use a buffer on stack.
Well, we would need to define somewhere (likely in include/linux/console.h):
#define CONSOLE_DEVNAME_LEN 32
and then do
char port_match[CONSOLE_DEVNAME_LEN];
int len;
len = snprintf(port_match, ARRAY_SIZE(port_match), "%s:%d.%d",
dev_name(port->dev), port->ctrl_id, port->port_id);
if (len >= ARRAY_SIZE(port_match)) {
pr_warn("Console devname does not fit into the buffer: "%s:%d.%d\n",
dev_name(port->dev), port->ctrl_id, port->port_id);
return -ENOMEM;
}
The advantage is that it would warn when there are longer device names.
It would help to catch situations when CONSOLE_DEVNAME_LEN is not big enough.
It might be done in a separate patch.
> +
> + ret = match_devname_and_update_preferred_console(port_match,
> + drv->dev_name,
> + port->line);
> + if (ret == -ENOENT)
> + return 0;
> +
> + return ret;
> +}
> +
> +#endif
> +
> static int serial_base_init(void)
> {
> int ret;
Best Regards,
Petr
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/4] Fixes for console command line ordering
2024-06-20 12:45 [PATCH v4 0/4] Fixes for console command line ordering Tony Lindgren
` (3 preceding siblings ...)
2024-06-20 12:45 ` [PATCH v4 4/4] serial: core: Add serial_base_match_and_update_preferred_console() Tony Lindgren
@ 2024-06-21 14:44 ` Petr Mladek
2024-06-24 13:35 ` Greg Kroah-Hartman
4 siblings, 1 reply; 14+ messages in thread
From: Petr Mladek @ 2024-06-21 14:44 UTC (permalink / raw)
To: Tony Lindgren
Cc: Greg Kroah-Hartman, Linus Torvalds, Jiri Slaby, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren,
Ilpo Järvinen, linux-serial, linux-kernel
Added Linus into Cc.
On Thu 2024-06-20 15:45:25, Tony Lindgren wrote:
> Hi,
>
> Recent changes to add support for DEVNAME:0.0 style consoles caused a
> regression with the preferred console order where the last console on
> the kernel command line is no longer the preferred console.
>
> The following four changes fix the issue using Petr's suggestion that
> does not involve calling __add_preferred_console() later on again, and
> adds the deferred consoles to the console_cmdline[] directly to be
> updated when the console is ready.
>
> We revert the earlier printk related changes, and then add back the
> DEVNAME:0.0 functionality based on Petr's code snippet. And we end up
> reducing the code quite a bit too this way.
>
> And we also revert all the unusable serial core console quirk handling,
> it does not do anything for the legacy "ttyS" named consoles. And then
> we add a minimal serial_base_match_and_update_preferred_console().
>
> The reason we want DEVNAME:0.0 style consoles is it helps addressing the
> console based on the connected serial port controller device rather than
> using the hardcoded ttyS addressing. And that helps with issues related
> to the console moving around after togging the HSUART option in the BIOS,
> or when new ports are enabled in devicetree and aliases are not updated.
>
> Tony Lindgren (4):
> printk: Revert add_preferred_console_match() related commits
> printk: Add match_devname_and_update_preferred_console()
> serial: core: Revert unusable console quirk handling
> serial: core: Add serial_base_match_and_update_preferred_console()
>
> drivers/tty/serial/8250/8250_core.c | 5 -
> drivers/tty/serial/serial_base.h | 22 +---
> drivers/tty/serial/serial_base_bus.c | 116 +++------------------
> drivers/tty/serial/serial_core.c | 2 +-
> include/linux/printk.h | 5 +-
> kernel/printk/Makefile | 2 +-
> kernel/printk/conopt.c | 146 ---------------------------
> kernel/printk/console_cmdline.h | 7 +-
> kernel/printk/printk.c | 122 ++++++++++++++++------
> 9 files changed, 112 insertions(+), 315 deletions(-)
> delete mode 100644 kernel/printk/conopt.c
The patchset looks ready for linux-next. And I have pushed it
into printk/linux.git, branch for-6.10-register-console-devname.
I am not sure about the mainline. We need to fix the regression in 6.10.
The change is not trivial and rc5 is knocking on the doors.
Unfortunately, the patchset intermixes reverts and new code.
So that it can't be used for simple revert as is.
I am quite confident that the new code works as expected.
It changes tricky code but the logic of the change is quite
straightforward.
I see three solutions:
1. Linus could merge the changes directly into rc5.
2. I could send a pull request after it survives few days in
linux-next.
3. Or we rework the patchset. And do pure revert for 6.10 and
add the feature a clean way for-6.11.
I personally prefer the 3rd solution. But I am super conservative.
I guess that most other people would go with the other 2 solutions.
Best Regards,
Petr
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 4/4] serial: core: Add serial_base_match_and_update_preferred_console()
2024-06-21 12:37 ` Petr Mladek
@ 2024-06-24 7:21 ` Tony Lindgren
0 siblings, 0 replies; 14+ messages in thread
From: Tony Lindgren @ 2024-06-24 7:21 UTC (permalink / raw)
To: Petr Mladek
Cc: Greg Kroah-Hartman, Jiri Slaby, Steven Rostedt, John Ogness,
Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren,
Ilpo Järvinen, linux-serial, linux-kernel
On Fri, Jun 21, 2024 at 02:37:27PM +0200, Petr Mladek wrote:
> On Thu 2024-06-20 15:45:29, Tony Lindgren wrote:
> > Let's add serial_base_match_and_update_preferred_console() for consoles
> > using DEVNAME:0.0 style naming.
> >
> > The earlier approach to add it caused issues in the kernel command line
> > ordering as we were calling __add_preferred_console() again for the
> > deferred consoles.
> >
> > Signed-off-by: Tony Lindgren <tony.lindgren@linux.intel.com>
>
> Looks good and seems to work well:
>
> Reviewed-by: Petr Mladek <pmladek@suse.com>
> Tested-by: Petr Mladek <pmladek@suse.com>
OK thanks for testing again.
> See an idea below.
>
> > --- a/drivers/tty/serial/serial_base_bus.c
> > +++ b/drivers/tty/serial/serial_base_bus.c
...
> > +int serial_base_match_and_update_preferred_console(struct uart_driver *drv,
> > + struct uart_port *port)
> > +{
> > + const char *port_match __free(kfree) = NULL;
> > + int ret;
> > +
> > + port_match = kasprintf(GFP_KERNEL, "%s:%d.%d", dev_name(port->dev),
> > + port->ctrl_id, port->port_id);
> > + if (!port_match)
> > + return -ENOMEM;
>
> The name is going to be compared with:
>
> struct console_cmdline
> {
> [...]
> char devname[32]; /* DEVNAME:0.0 style device name */
>
> It looks like an overkill to allocate such a small buffer. It would
> be perfectly fine to use a buffer on stack.
>
> Well, we would need to define somewhere (likely in include/linux/console.h):
>
> #define CONSOLE_DEVNAME_LEN 32
>
> and then do
>
> char port_match[CONSOLE_DEVNAME_LEN];
> int len;
>
> len = snprintf(port_match, ARRAY_SIZE(port_match), "%s:%d.%d",
> dev_name(port->dev), port->ctrl_id, port->port_id);
> if (len >= ARRAY_SIZE(port_match)) {
> pr_warn("Console devname does not fit into the buffer: "%s:%d.%d\n",
> dev_name(port->dev), port->ctrl_id, port->port_id);
> return -ENOMEM;
> }
>
> The advantage is that it would warn when there are longer device names.
> It would help to catch situations when CONSOLE_DEVNAME_LEN is not big enough.
Good idea.
> It might be done in a separate patch.
Sounds good to me.
Regards,
Tony
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/4] Fixes for console command line ordering
2024-06-21 14:44 ` [PATCH v4 0/4] Fixes for console command line ordering Petr Mladek
@ 2024-06-24 13:35 ` Greg Kroah-Hartman
2024-06-25 5:12 ` Tony Lindgren
0 siblings, 1 reply; 14+ messages in thread
From: Greg Kroah-Hartman @ 2024-06-24 13:35 UTC (permalink / raw)
To: Petr Mladek
Cc: Tony Lindgren, Linus Torvalds, Jiri Slaby, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren,
Ilpo Järvinen, linux-serial, linux-kernel
On Fri, Jun 21, 2024 at 04:44:10PM +0200, Petr Mladek wrote:
> Added Linus into Cc.
>
> On Thu 2024-06-20 15:45:25, Tony Lindgren wrote:
> > Hi,
> >
> > Recent changes to add support for DEVNAME:0.0 style consoles caused a
> > regression with the preferred console order where the last console on
> > the kernel command line is no longer the preferred console.
> >
> > The following four changes fix the issue using Petr's suggestion that
> > does not involve calling __add_preferred_console() later on again, and
> > adds the deferred consoles to the console_cmdline[] directly to be
> > updated when the console is ready.
> >
> > We revert the earlier printk related changes, and then add back the
> > DEVNAME:0.0 functionality based on Petr's code snippet. And we end up
> > reducing the code quite a bit too this way.
> >
> > And we also revert all the unusable serial core console quirk handling,
> > it does not do anything for the legacy "ttyS" named consoles. And then
> > we add a minimal serial_base_match_and_update_preferred_console().
> >
> > The reason we want DEVNAME:0.0 style consoles is it helps addressing the
> > console based on the connected serial port controller device rather than
> > using the hardcoded ttyS addressing. And that helps with issues related
> > to the console moving around after togging the HSUART option in the BIOS,
> > or when new ports are enabled in devicetree and aliases are not updated.
> >
> > Tony Lindgren (4):
> > printk: Revert add_preferred_console_match() related commits
> > printk: Add match_devname_and_update_preferred_console()
> > serial: core: Revert unusable console quirk handling
> > serial: core: Add serial_base_match_and_update_preferred_console()
> >
> > drivers/tty/serial/8250/8250_core.c | 5 -
> > drivers/tty/serial/serial_base.h | 22 +---
> > drivers/tty/serial/serial_base_bus.c | 116 +++------------------
> > drivers/tty/serial/serial_core.c | 2 +-
> > include/linux/printk.h | 5 +-
> > kernel/printk/Makefile | 2 +-
> > kernel/printk/conopt.c | 146 ---------------------------
> > kernel/printk/console_cmdline.h | 7 +-
> > kernel/printk/printk.c | 122 ++++++++++++++++------
> > 9 files changed, 112 insertions(+), 315 deletions(-)
> > delete mode 100644 kernel/printk/conopt.c
>
> The patchset looks ready for linux-next. And I have pushed it
> into printk/linux.git, branch for-6.10-register-console-devname.
>
> I am not sure about the mainline. We need to fix the regression in 6.10.
> The change is not trivial and rc5 is knocking on the doors.
>
> Unfortunately, the patchset intermixes reverts and new code.
> So that it can't be used for simple revert as is.
>
> I am quite confident that the new code works as expected.
> It changes tricky code but the logic of the change is quite
> straightforward.
>
>
> I see three solutions:
>
> 1. Linus could merge the changes directly into rc5.
>
> 2. I could send a pull request after it survives few days in
> linux-next.
>
> 3. Or we rework the patchset. And do pure revert for 6.10 and
> add the feature a clean way for-6.11.
Pure revert for 6.10 might be good, as it's late in the cycle. Let me
know the git ids and I can do that.
> I personally prefer the 3rd solution. But I am super conservative.
> I guess that most other people would go with the other 2 solutions.
I'll be conservative here as well.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/4] Fixes for console command line ordering
2024-06-24 13:35 ` Greg Kroah-Hartman
@ 2024-06-25 5:12 ` Tony Lindgren
2024-06-25 6:20 ` Greg Kroah-Hartman
0 siblings, 1 reply; 14+ messages in thread
From: Tony Lindgren @ 2024-06-25 5:12 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Petr Mladek, Linus Torvalds, Jiri Slaby, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren,
Ilpo Järvinen, linux-serial, linux-kernel
On Mon, Jun 24, 2024 at 03:35:39PM +0200, Greg Kroah-Hartman wrote:
> On Fri, Jun 21, 2024 at 04:44:10PM +0200, Petr Mladek wrote:
> > Added Linus into Cc.
> >
> > On Thu 2024-06-20 15:45:25, Tony Lindgren wrote:
> > > Hi,
> > >
> > > Recent changes to add support for DEVNAME:0.0 style consoles caused a
> > > regression with the preferred console order where the last console on
> > > the kernel command line is no longer the preferred console.
> > >
> > > The following four changes fix the issue using Petr's suggestion that
> > > does not involve calling __add_preferred_console() later on again, and
> > > adds the deferred consoles to the console_cmdline[] directly to be
> > > updated when the console is ready.
> > >
> > > We revert the earlier printk related changes, and then add back the
> > > DEVNAME:0.0 functionality based on Petr's code snippet. And we end up
> > > reducing the code quite a bit too this way.
> > >
> > > And we also revert all the unusable serial core console quirk handling,
> > > it does not do anything for the legacy "ttyS" named consoles. And then
> > > we add a minimal serial_base_match_and_update_preferred_console().
> > >
> > > The reason we want DEVNAME:0.0 style consoles is it helps addressing the
> > > console based on the connected serial port controller device rather than
> > > using the hardcoded ttyS addressing. And that helps with issues related
> > > to the console moving around after togging the HSUART option in the BIOS,
> > > or when new ports are enabled in devicetree and aliases are not updated.
> > >
> > > Tony Lindgren (4):
> > > printk: Revert add_preferred_console_match() related commits
> > > printk: Add match_devname_and_update_preferred_console()
> > > serial: core: Revert unusable console quirk handling
> > > serial: core: Add serial_base_match_and_update_preferred_console()
> > >
> > > drivers/tty/serial/8250/8250_core.c | 5 -
> > > drivers/tty/serial/serial_base.h | 22 +---
> > > drivers/tty/serial/serial_base_bus.c | 116 +++------------------
> > > drivers/tty/serial/serial_core.c | 2 +-
> > > include/linux/printk.h | 5 +-
> > > kernel/printk/Makefile | 2 +-
> > > kernel/printk/conopt.c | 146 ---------------------------
> > > kernel/printk/console_cmdline.h | 7 +-
> > > kernel/printk/printk.c | 122 ++++++++++++++++------
> > > 9 files changed, 112 insertions(+), 315 deletions(-)
> > > delete mode 100644 kernel/printk/conopt.c
> >
> > The patchset looks ready for linux-next. And I have pushed it
> > into printk/linux.git, branch for-6.10-register-console-devname.
> >
> > I am not sure about the mainline. We need to fix the regression in 6.10.
> > The change is not trivial and rc5 is knocking on the doors.
> >
> > Unfortunately, the patchset intermixes reverts and new code.
> > So that it can't be used for simple revert as is.
> >
> > I am quite confident that the new code works as expected.
> > It changes tricky code but the logic of the change is quite
> > straightforward.
> >
> >
> > I see three solutions:
> >
> > 1. Linus could merge the changes directly into rc5.
> >
> > 2. I could send a pull request after it survives few days in
> > linux-next.
> >
> > 3. Or we rework the patchset. And do pure revert for 6.10 and
> > add the feature a clean way for-6.11.
>
> Pure revert for 6.10 might be good, as it's late in the cycle. Let me
> know the git ids and I can do that.
Here's the list of git ids to revert:
$ git log --abbrev=12 --pretty=format:"%h (\"%s\")" v6.9..v6.10-rc5 \
--author="Tony Lindgren" kernel/printk drivers/tty/ Documentation/admin-guide/
b20172ca6bf4 ("serial: core: Fix ifdef for serial base console functions")
4547cd76f08a ("serial: 8250: Fix add preferred console for serial8250_isa_init_ports()")
5c3a766e9f05 ("Documentation: kernel-parameters: Add DEVNAME:0.0 format for serial ports")
a8b04cfe7dad ("serial: 8250: Add preferred console in serial8250_isa_init_ports()")
a0f32e2dd998 ("serial: core: Handle serial console options")
787a1cabac01 ("serial: core: Add support for DEVNAME:0.0 style naming for kernel console")
b73c9cbe4f1f ("printk: Flag register_console() if console is set on command line")
8a831c584e6e ("printk: Don't try to parse DEVNAME:0.0 console options")
f03e8c1060f8 ("printk: Save console options for add_preferred_console_match()")
> > I personally prefer the 3rd solution. But I am super conservative.
> > I guess that most other people would go with the other 2 solutions.
>
> I'll be conservative here as well.
Conservative is good.
Regards,
Tony
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/4] Fixes for console command line ordering
2024-06-25 5:12 ` Tony Lindgren
@ 2024-06-25 6:20 ` Greg Kroah-Hartman
2024-06-25 8:36 ` Petr Mladek
0 siblings, 1 reply; 14+ messages in thread
From: Greg Kroah-Hartman @ 2024-06-25 6:20 UTC (permalink / raw)
To: Tony Lindgren
Cc: Petr Mladek, Linus Torvalds, Jiri Slaby, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren,
Ilpo Järvinen, linux-serial, linux-kernel
On Tue, Jun 25, 2024 at 08:12:03AM +0300, Tony Lindgren wrote:
> On Mon, Jun 24, 2024 at 03:35:39PM +0200, Greg Kroah-Hartman wrote:
> > On Fri, Jun 21, 2024 at 04:44:10PM +0200, Petr Mladek wrote:
> > > Added Linus into Cc.
> > >
> > > On Thu 2024-06-20 15:45:25, Tony Lindgren wrote:
> > > > Hi,
> > > >
> > > > Recent changes to add support for DEVNAME:0.0 style consoles caused a
> > > > regression with the preferred console order where the last console on
> > > > the kernel command line is no longer the preferred console.
> > > >
> > > > The following four changes fix the issue using Petr's suggestion that
> > > > does not involve calling __add_preferred_console() later on again, and
> > > > adds the deferred consoles to the console_cmdline[] directly to be
> > > > updated when the console is ready.
> > > >
> > > > We revert the earlier printk related changes, and then add back the
> > > > DEVNAME:0.0 functionality based on Petr's code snippet. And we end up
> > > > reducing the code quite a bit too this way.
> > > >
> > > > And we also revert all the unusable serial core console quirk handling,
> > > > it does not do anything for the legacy "ttyS" named consoles. And then
> > > > we add a minimal serial_base_match_and_update_preferred_console().
> > > >
> > > > The reason we want DEVNAME:0.0 style consoles is it helps addressing the
> > > > console based on the connected serial port controller device rather than
> > > > using the hardcoded ttyS addressing. And that helps with issues related
> > > > to the console moving around after togging the HSUART option in the BIOS,
> > > > or when new ports are enabled in devicetree and aliases are not updated.
> > > >
> > > > Tony Lindgren (4):
> > > > printk: Revert add_preferred_console_match() related commits
> > > > printk: Add match_devname_and_update_preferred_console()
> > > > serial: core: Revert unusable console quirk handling
> > > > serial: core: Add serial_base_match_and_update_preferred_console()
> > > >
> > > > drivers/tty/serial/8250/8250_core.c | 5 -
> > > > drivers/tty/serial/serial_base.h | 22 +---
> > > > drivers/tty/serial/serial_base_bus.c | 116 +++------------------
> > > > drivers/tty/serial/serial_core.c | 2 +-
> > > > include/linux/printk.h | 5 +-
> > > > kernel/printk/Makefile | 2 +-
> > > > kernel/printk/conopt.c | 146 ---------------------------
> > > > kernel/printk/console_cmdline.h | 7 +-
> > > > kernel/printk/printk.c | 122 ++++++++++++++++------
> > > > 9 files changed, 112 insertions(+), 315 deletions(-)
> > > > delete mode 100644 kernel/printk/conopt.c
> > >
> > > The patchset looks ready for linux-next. And I have pushed it
> > > into printk/linux.git, branch for-6.10-register-console-devname.
> > >
> > > I am not sure about the mainline. We need to fix the regression in 6.10.
> > > The change is not trivial and rc5 is knocking on the doors.
> > >
> > > Unfortunately, the patchset intermixes reverts and new code.
> > > So that it can't be used for simple revert as is.
> > >
> > > I am quite confident that the new code works as expected.
> > > It changes tricky code but the logic of the change is quite
> > > straightforward.
> > >
> > >
> > > I see three solutions:
> > >
> > > 1. Linus could merge the changes directly into rc5.
> > >
> > > 2. I could send a pull request after it survives few days in
> > > linux-next.
> > >
> > > 3. Or we rework the patchset. And do pure revert for 6.10 and
> > > add the feature a clean way for-6.11.
> >
> > Pure revert for 6.10 might be good, as it's late in the cycle. Let me
> > know the git ids and I can do that.
>
> Here's the list of git ids to revert:
>
> $ git log --abbrev=12 --pretty=format:"%h (\"%s\")" v6.9..v6.10-rc5 \
> --author="Tony Lindgren" kernel/printk drivers/tty/ Documentation/admin-guide/
> b20172ca6bf4 ("serial: core: Fix ifdef for serial base console functions")
> 4547cd76f08a ("serial: 8250: Fix add preferred console for serial8250_isa_init_ports()")
> 5c3a766e9f05 ("Documentation: kernel-parameters: Add DEVNAME:0.0 format for serial ports")
> a8b04cfe7dad ("serial: 8250: Add preferred console in serial8250_isa_init_ports()")
> a0f32e2dd998 ("serial: core: Handle serial console options")
> 787a1cabac01 ("serial: core: Add support for DEVNAME:0.0 style naming for kernel console")
> b73c9cbe4f1f ("printk: Flag register_console() if console is set on command line")
> 8a831c584e6e ("printk: Don't try to parse DEVNAME:0.0 console options")
> f03e8c1060f8 ("printk: Save console options for add_preferred_console_match()")
All now reverted, thanks!
greg k-h
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/4] Fixes for console command line ordering
2024-06-25 6:20 ` Greg Kroah-Hartman
@ 2024-06-25 8:36 ` Petr Mladek
2024-06-25 9:07 ` Tony Lindgren
0 siblings, 1 reply; 14+ messages in thread
From: Petr Mladek @ 2024-06-25 8:36 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Tony Lindgren, Linus Torvalds, Jiri Slaby, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren,
Ilpo Järvinen, linux-serial, linux-kernel
On Tue 2024-06-25 08:20:06, Greg Kroah-Hartman wrote:
> On Tue, Jun 25, 2024 at 08:12:03AM +0300, Tony Lindgren wrote:
> > On Mon, Jun 24, 2024 at 03:35:39PM +0200, Greg Kroah-Hartman wrote:
> > > On Fri, Jun 21, 2024 at 04:44:10PM +0200, Petr Mladek wrote:
> > > > Added Linus into Cc.
> > > >
> > > > On Thu 2024-06-20 15:45:25, Tony Lindgren wrote:
> > > > > Hi,
> > > > >
> > > > > Recent changes to add support for DEVNAME:0.0 style consoles caused a
> > > > > regression with the preferred console order where the last console on
> > > > > the kernel command line is no longer the preferred console.
> > > > >
> > > > > The following four changes fix the issue using Petr's suggestion that
> > > > > does not involve calling __add_preferred_console() later on again, and
> > > > > adds the deferred consoles to the console_cmdline[] directly to be
> > > > > updated when the console is ready.
> > > > >
> > > > > We revert the earlier printk related changes, and then add back the
> > > > > DEVNAME:0.0 functionality based on Petr's code snippet. And we end up
> > > > > reducing the code quite a bit too this way.
> > > > >
> > > > > And we also revert all the unusable serial core console quirk handling,
> > > > > it does not do anything for the legacy "ttyS" named consoles. And then
> > > > > we add a minimal serial_base_match_and_update_preferred_console().
> > > > >
> > > > > The reason we want DEVNAME:0.0 style consoles is it helps addressing the
> > > > > console based on the connected serial port controller device rather than
> > > > > using the hardcoded ttyS addressing. And that helps with issues related
> > > > > to the console moving around after togging the HSUART option in the BIOS,
> > > > > or when new ports are enabled in devicetree and aliases are not updated.
> > > > >
> > > > > Tony Lindgren (4):
> > > > > printk: Revert add_preferred_console_match() related commits
> > > > > printk: Add match_devname_and_update_preferred_console()
> > > > > serial: core: Revert unusable console quirk handling
> > > > > serial: core: Add serial_base_match_and_update_preferred_console()
> > > > >
> > > > > drivers/tty/serial/8250/8250_core.c | 5 -
> > > > > drivers/tty/serial/serial_base.h | 22 +---
> > > > > drivers/tty/serial/serial_base_bus.c | 116 +++------------------
> > > > > drivers/tty/serial/serial_core.c | 2 +-
> > > > > include/linux/printk.h | 5 +-
> > > > > kernel/printk/Makefile | 2 +-
> > > > > kernel/printk/conopt.c | 146 ---------------------------
> > > > > kernel/printk/console_cmdline.h | 7 +-
> > > > > kernel/printk/printk.c | 122 ++++++++++++++++------
> > > > > 9 files changed, 112 insertions(+), 315 deletions(-)
> > > > > delete mode 100644 kernel/printk/conopt.c
> > > >
> > > > The patchset looks ready for linux-next. And I have pushed it
> > > > into printk/linux.git, branch for-6.10-register-console-devname.
> > > >
> > > > I am not sure about the mainline. We need to fix the regression in 6.10.
> > > > The change is not trivial and rc5 is knocking on the doors.
> > > >
> > > > Unfortunately, the patchset intermixes reverts and new code.
> > > > So that it can't be used for simple revert as is.
> > > >
> > > > I am quite confident that the new code works as expected.
> > > > It changes tricky code but the logic of the change is quite
> > > > straightforward.
> > > >
> > > >
> > > > I see three solutions:
> > > >
> > > > 1. Linus could merge the changes directly into rc5.
> > > >
> > > > 2. I could send a pull request after it survives few days in
> > > > linux-next.
> > > >
> > > > 3. Or we rework the patchset. And do pure revert for 6.10 and
> > > > add the feature a clean way for-6.11.
> > >
> > > Pure revert for 6.10 might be good, as it's late in the cycle. Let me
> > > know the git ids and I can do that.
> >
> > Here's the list of git ids to revert:
> >
> > $ git log --abbrev=12 --pretty=format:"%h (\"%s\")" v6.9..v6.10-rc5 \
> > --author="Tony Lindgren" kernel/printk drivers/tty/ Documentation/admin-guide/
> > b20172ca6bf4 ("serial: core: Fix ifdef for serial base console functions")
> > 4547cd76f08a ("serial: 8250: Fix add preferred console for serial8250_isa_init_ports()")
> > 5c3a766e9f05 ("Documentation: kernel-parameters: Add DEVNAME:0.0 format for serial ports")
> > a8b04cfe7dad ("serial: 8250: Add preferred console in serial8250_isa_init_ports()")
> > a0f32e2dd998 ("serial: core: Handle serial console options")
> > 787a1cabac01 ("serial: core: Add support for DEVNAME:0.0 style naming for kernel console")
> > b73c9cbe4f1f ("printk: Flag register_console() if console is set on command line")
> > 8a831c584e6e ("printk: Don't try to parse DEVNAME:0.0 console options")
> > f03e8c1060f8 ("printk: Save console options for add_preferred_console_match()")
>
> All now reverted, thanks!
Great, thanks Greg!
Tony, could you please send a new patchset which would provide
the new solution on top of this revert? It might make sense
to wait until the revert reaches mainline.
Best Regards,
Petr
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/4] Fixes for console command line ordering
2024-06-25 8:36 ` Petr Mladek
@ 2024-06-25 9:07 ` Tony Lindgren
0 siblings, 0 replies; 14+ messages in thread
From: Tony Lindgren @ 2024-06-25 9:07 UTC (permalink / raw)
To: Petr Mladek
Cc: Greg Kroah-Hartman, Linus Torvalds, Jiri Slaby, Steven Rostedt,
John Ogness, Sergey Senozhatsky, Andy Shevchenko, Tony Lindgren,
Ilpo Järvinen, linux-serial, linux-kernel
On Tue, Jun 25, 2024 at 10:36:17AM +0200, Petr Mladek wrote:
> On Tue 2024-06-25 08:20:06, Greg Kroah-Hartman wrote:
> > All now reverted, thanks!
>
> Great, thanks Greg!
>
> Tony, could you please send a new patchset which would provide
> the new solution on top of this revert? It might make sense
> to wait until the revert reaches mainline.
Yup will do.
Thanks,
Tony
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2024-06-25 9:07 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-20 12:45 [PATCH v4 0/4] Fixes for console command line ordering Tony Lindgren
2024-06-20 12:45 ` [PATCH v4 1/4] printk: Revert add_preferred_console_match() related commits Tony Lindgren
2024-06-20 12:45 ` [PATCH v4 2/4] printk: Add match_devname_and_update_preferred_console() Tony Lindgren
2024-06-20 12:45 ` [PATCH v4 3/4] serial: core: Revert unusable console quirk handling Tony Lindgren
2024-06-21 12:15 ` Petr Mladek
2024-06-20 12:45 ` [PATCH v4 4/4] serial: core: Add serial_base_match_and_update_preferred_console() Tony Lindgren
2024-06-21 12:37 ` Petr Mladek
2024-06-24 7:21 ` Tony Lindgren
2024-06-21 14:44 ` [PATCH v4 0/4] Fixes for console command line ordering Petr Mladek
2024-06-24 13:35 ` Greg Kroah-Hartman
2024-06-25 5:12 ` Tony Lindgren
2024-06-25 6:20 ` Greg Kroah-Hartman
2024-06-25 8:36 ` Petr Mladek
2024-06-25 9:07 ` Tony Lindgren
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).