[PATCH 0/8] printk: Clean up preferred console handling

Petr Mladek posted 8 patches 14 hours ago
.../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%)
[PATCH 0/8] printk: Clean up preferred console handling
Posted by Petr Mladek 14 hours ago
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