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
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
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
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
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
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
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
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
© 2016 - 2025 Red Hat, Inc.