Re: [PATCH 00/19] printk cleanup - part 3
From: Petr Mladek <pmladek@suse.com>
Date: 2026-01-14 08:20:27
Also in:
linux-arm-kernel, linux-fsdevel, linux-hardening, linux-m68k, linux-serial, linux-um, lkml, netdev, sparclinux
On Tue 2026-01-13 21:32:33, Marcos Paulo de Souza wrote:
On Tue, 2026-01-13 at 09:41 -0300, Marcos Paulo de Souza wrote:quoted
On Mon, 2026-01-05 at 14:08 +0000, Daniel Thompson wrote:quoted
On Mon, Jan 05, 2026 at 12:52:14PM +0000, Daniel Thompson wrote:quoted
Hi Marcos On Sat, Dec 27, 2025 at 09:16:07AM -0300, Marcos Paulo de Souza wrote:quoted
The parts 1 and 2 can be found here [1] and here[2]. The changes proposed in this part 3 are mostly to clarify the usage of the interfaces for NBCON, and use the printk helpers more broadly. Besides it, it also introduces a new way to register consoles and drop thes the CON_ENABLED flag. It seems too much, but in reality the changes are not complex, and as the title says, it's basically a cleanup without changing the functional changes.I ran this patchset through the kgdb test suite and I'm afraid it is reporting functional changes. Specifically the earlycon support for kdb has regressed (FWIW the problem bisects down to the final patch in the series where CON_ENABLED is removed). Reproduction on x86-64 KVM outside of the test suite should be easy: make defconfig scripts/config \ --enable DEBUG_INFO \ --enable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT \ --enable DEBUG_FS \ --enable KALLSYMS_ALL \ --enable MAGIC_SYSRQ \ --enable KGDB \ --enable KGDB_TESTS \ --enable KGDB_KDB \ --enable KDB_KEYBOARD \ --enable LKDTM \ --enable SECURITY_LOCKDOWN_LSM make olddefconfig make -j$(nproc) qemu-system-x86_64 \ -m 1G -smp 2 -nographic \ -kernel arch/x86/boot/bzImage \ -append "console=ttyS0,115200 kgdboc=ttyS0 earlycon=uart8250,io,0x3f8 kgdboc_earlycon kgdbwait"Actually I realized there was a simpler reproduction (hinted at by the missing "printk: legacy bootconsole [uart8250] enabled" in the regressed case). It looks like the earlycon simply doesn't work and that means the reproduction doesn't require anything related to kgdb at all. Simply: make defconfig make -j$(nproc) qemu-system-x86_64 -m 1G -smp 2 -nographic -kernel arch/x86/boot/bzImage \ -append "earlycon=uart8250,io,0x3f8" With the part 3 patchset applied I get no output from the earlycon (without the patch set I get the early boot messages which, as expected, stop when tty0 comes up).Hi Daniel, sorry for the late reply! Lots of things to check lately :) Ok, I reproduced here, thanks a lot for testing kgdboc, it's a quick way to check that the new register_console_force is not working. Let me take a look to find what's wrong. Thanks a lot for finding this issue!Ok, I did a bisect and found out that the issue lies in the last commit, where CON_ENABLED was removed. After it, I then checked what was wrong, since everything was being plumbed correctly (tm), and then I found that it was not: On _register_console, the function try_enable_default_console is called when there are not registered consoles, and then it sets CON_ENABLED for the console. Later on, try_enable_preferred_console it checks if the console was specified by the user, and at the same time it had CON_ENABLED set. It worked by chance, but now, we don't have this flag anymore, and then we are not _marking_ the console on try_enable_default_console so try_enable_preferred_console returns ENOENT.
Great catch! Yeah, it worked just by chance.
So, without any console kgdb is activated much later in the boot process, as you found it. I talked with Petr Mladek and it would need to rework the way that we register a console, and he's already working on it.
Yes, I have some patches in early stages of developnent of another feature which would help here.
For now I believe that we could take a look in all the patches besides the last one that currently breaks the earlycon with kgdb and maybe other usecases.
I agree. I am going to review this patchset first. Then I'll try to clean up the patches which remove the ugly side effect from try_enable_preferred_console(). Then we could discuss how to move forward. It might make sense to push this patchset first without the last patch...
Sorry for not catching this issue before. I'll use kgdb next time to make sure that it keeps working :)
Do not worry at all. It was a well hidden catch. It is great that Daniel found the regression in time... Best Regards, Petr