Hi,
this patches does some clean up of the code for handling preferred consoles
in the console registration code.
+ 1st and 2nd patch try to improve a naming.
The meaning of struct console_cmdline has changed over time.
The meaning of "preferred_console" variable has always been a bit
confusing and it has got even worse after adding the support for
Braille consoles.
+ 3rd patch remove some code duplication. It better defines and describes
the rules for adding and updating preferred consoles. It uses a more
defensive coding style.
+ 4th, 5th, and 6th patch improve handling of Braille consoles.
They are preferred via the command line but they do not get
printk() messages and are not associated with /dev/console.
The new code makes this more obvious. Also it explicitly
defines the relation against default consoles and other
non-Braille preferred consoles.
+ 7th patch removes a hidden side effect of
try_enable_preferred_console()
+ 8th patch removes the last hidden side effect of
try_enable_preferred_console() and allows to call it
only when there are any non-Braille preferred consoles.
I tested many scenarios of fixed several bugs. I did my best to
prevent regressions.
This patchset is a prerequisite for Marcos' clean up of CON_ENABLE
flag handling. It should prevent regressions caused by the
hidden effects of try_enable_preferred_console(), for example,
see https://lore.kernel.org/r/89409a0f48e6998ff6dd2245691b9954f0e1e435.camel@suse.com
Also I am working on a feature which would allow to explicitly
enable/prefer consoles proposed by SPCR, device tree, or
platform-specific code using a generic "console=platform".
This clean up is a prerequisite, see
https://github.com/pmladek/linux/tree/console-platform-poc1-iter9
The patchset has been re-based on top of v6.19-rc8.
Petr Mladek (8):
printk: Rename struct console_cmdline to preferred_console
printk: Rename preferred_console to preferred_dev_console
printk: Separate code for adding/updating preferred console metadata
printk: Cleanup _braille_(un)register_console() wrappers
printk: Try to register each console as Braille first
printk: Do not set Braille console as preferred_console
printk: Handle pre-enabled consoles directly in register_console()
printk: Try enable preferred consoles only when there are any
.../accessibility/braille/braille_console.c | 7 +-
kernel/printk/braille.c | 20 +-
kernel/printk/braille.h | 23 +-
.../{console_cmdline.h => console_register.h} | 6 +-
kernel/printk/printk.c | 295 ++++++++++++------
5 files changed, 223 insertions(+), 128 deletions(-)
rename kernel/printk/{console_cmdline.h => console_register.h} (83%)
--
2.52.0