mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v6 00/16] printk: Clean up preferred console handling
@ 2026-11-06 17:19 Petr Mladek
  2026-11-06 17:19 ` [PATCH v6 01/16] printk: Rename struct console_cmdline to preferred_console Petr Mladek
                   ` (15 more replies)
  0 siblings, 16 replies; 17+ messages in thread
From: Petr Mladek @ 2026-11-06 17:19 UTC (permalink / raw)
  To: John Ogness
  Cc: Sergey Senozhatsky, Steven Rostedt, Marcos Paulo de Souza,
	Chris Down, Naveen Kumar Chaudhary, printk, linux-kernel,
	Petr Mladek

Hi,

this patchset does some clean up of the code for handling preferred
consoles in the console registration code.

It is a prerequisite some more patchsets, namely:

  + 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

  + for Chris' per-console log-level, see
    https://lore.kernel.org/r/cover.1764272407.git.chris@chrisdown.name

and maybe even some more.


Changes against [v5]:

  + Updated comment about preferred_consoles[] (1st patch) [Chris]
  + Removed extra newline (1st patch) [Chris]

  + Added back two comments (4th patch) [John]
  + Fixed kernel-doc formatting (4th patch) [Chris]

  + Added check for empty @name or @devname (5th patch (new)) [Chris]

  + Fixed typos (6th patch) [Chris]

  + Added back "[*]" (7th patch) [John]

  + Removed problematic patch which allowed to override
    console options via the command line (9th patch in v5)) [Chris]

  + Added comment about that console_call_setup() was made global
    only for Braille console driver. (11th patch) [Chris]

  + Reworked description of behavior changes when preferring
    Braille over non-Braille preferred console entries (13th patch) [Chris]
  + Fixed comment: s/preferred_console/preferred_dev_console/ (13th patch) [Chris]

  + Optimize handling of preferred_dev_console list (14th patch) [Chris]

  + Added Reviewed-by and Acked-by tags. 


Changes against [v4]:

  + Removed 1st patch from v4. Already in upstream.

  +  Cleanup _braille_(un)register_console() wrappers already in 3rd
     patch. is_braille_console_preferred() will be needed sooner.

  + Split 4th patch. Start with reshufling the add_preferred_console()
    code without any functional changes. Add the various checks
    and behavior changes one by one is a followup patches.

  + Rework the code to make it clear when it is a new entry or an update.

  + Put back braille_set_options() which just updates the optional
    entry. The logic when the value should get updated is the same
    as for pc->options.

  + Make sure that options can be overridden by the command line.

  + Add preferred_dev_node to remember the ordering of preferred consoles.
    Use it when the last one becomes Braille. The previous version tried to
    remembered just the last preferred console. But the logic because
    pretty complicated when I tried to make it error proof. AI was
    able to find many scenarios where it broke. The list is
    the ultimate solution and is easier in the end.

  + Use console_call_setup() in braille_register_console() instead
    of duplicating the code [John]


Changes against [v3]:

  + Move the handling of pre-enabled consoles into register_console()
    as 1st patch. It prevents a possible invalid access. [Petr]

  + Move the code for handling pre-enabled to console to
    try_enable_console() in 7th patch. The resulting code
    is the same as in v3.

    This 2nd move was not needed in v3 because the code
    was moved to this final location later. [Petr]

  + Switch order of the 10th and 11th patch. Aka make
    try_enable_default_console() return an err before
    refactoring try_enable_console() call
    try_enable_preferred_console() only when there is any.
    [Petr]

  + Initialize err value in try_enable_console() in 11th patch.
    It prevents using a non-initialized variable. [AI:gemini-3]

  + Make sure that pre-enabled consoles won't get registered
    when something went wrong in try_enable_console()
    in 11th patch [Petr]


Changes against [v2]:

  + Move static_assert() after declaration (1st patch) [Steven]

  + Rename update_preferred_console() to add_or_update_preferred_console() [John]
  + WARN_ON() when called without "name" and "devname" [John]
  + print error when reached MAX_PREFERRED_CONSOLES
  + Add comment above code adding new entries [John]
    (all in 4th patch)

  + Call console->setup() under console_lock() in braille_register_console()
    (new patch) [Sashiko]

  + Use "No functional changes." phrase in commit messages. [Steven]

  + Call try_enable_preferred_console() only when there is no
    preferred console (reworked and split 9th patch) [Petr]

  + Added taken Reviewed-by and Acked-by tags [John, Macros]


Changes against [v1]:

  + Fix stale comment (1st patch, Chris)

  + Add comment descibing update_preferred_console() behavior (3rd patch, John)

  + Better describe behavior changes caused by update_preferred_console()
    in the commit message (3rd patch, Chris)

  + Use unsigned int for iterating/indexing preferred_consoles[]
    table (3rd patch, John)

  + Add a check preventing an update via "devname" is already assigned
    to a real "name". (3rd patch, Petr)

  + Use only Braille entries when trying to enable Braille console (Chris)

  + Split all try_enable_*console() calls into new try_enable_console()
    and return early when try_enable_braille_console() succeeded.
    Note that we do not longer need to initialize "err" variable
    in this case. (new 5th patch, Chris, Petr)

  + Put back the explicit check of CON_BRL flag in register_console()
    so that it returns prelimitary only when the driver is used in Braille
    mode. (6th patch, Chris, Petr)

  + Add comments explaining that try_enable_braille_console() might succeeded
    also when newcon->match() succeeded. In this case, the Braille mode can't
    be used because the console device was already used as an early console.[*]
    (6th patch, Chris, Petr)

  + Reset preferred_dev_console_prev when used to revert the value.
    (7th patch, John)

  + Add Acked-by and Reviewed-by tags (1st, 2nd, 4th patch, Chris, Marcos)


[v1] https://lore.kernel.org/r/20260206165002.496724-1-pmladek@suse.com
[v2] https://lore.kernel.org/r/20260423130015.85175-1-pmladek@suse.com
[v3] https://lore.kernel.org/r/20260602085312.228251-1-pmladek@suse.com
[v4] https://lore.kernel.org/r/20260604101459.393162-1-pmladek@suse.com
[v5] https://lore.kernel.org/r/20260929120546.328616-1-pmladek@suse.com

Petr Mladek (16):
  printk: Rename struct console_cmdline to preferred_console
  printk: Rename preferred_console to preferred_dev_console
  printk: Cleanup _braille_(un)register_console() wrappers
  printk: Separate code for adding/updating preferred console metadata
  printk: Do not accept an empty name or devname as a preferred console
  printk: Prefer the console either via name or devname exclusively
  printk: Check that index is not defined when a console is preferred
    via devname
  printk: Ensure consistent name and devname when updating preferred
    console
  printk: Do not quietly ignore adding entry for a preferred console
    when there is no space
  printk: Allow to debug misuse of add_or_update_preferred_console()
  console/braille: Lock console->setup() call during the registration
  printk: Separate code for enabling console
  printk: Try to register each console as Braille first
  printk: Do not set Braille console as preferred_console
  printk: Modify try_enable_default_console() to return error/success
  printk: Try enable preferred consoles only when there are any

 .../accessibility/braille/braille_console.c   |  17 +-
 include/linux/console.h                       |   1 +
 kernel/printk/braille.c                       |  20 +-
 kernel/printk/braille.h                       |  22 +-
 .../{console_cmdline.h => console_register.h} |   9 +-
 kernel/printk/printk.c                        | 429 ++++++++++++------
 6 files changed, 338 insertions(+), 160 deletions(-)
 rename kernel/printk/{console_cmdline.h => console_register.h} (74%)

-- 
2.56.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2026-11-06 17:23 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-06 17:19 [PATCH v6 00/16] printk: Clean up preferred console handling Petr Mladek
2026-11-06 17:19 ` [PATCH v6 01/16] printk: Rename struct console_cmdline to preferred_console Petr Mladek
2026-11-06 17:19 ` [PATCH v6 02/16] printk: Rename preferred_console to preferred_dev_console Petr Mladek
2026-11-06 17:19 ` [PATCH v6 03/16] printk: Cleanup _braille_(un)register_console() wrappers Petr Mladek
2026-11-06 17:19 ` [PATCH v6 04/16] printk: Separate code for adding/updating preferred console metadata Petr Mladek
2026-11-06 17:19 ` [PATCH v6 05/16] printk: Do not accept an empty name or devname as a preferred console Petr Mladek
2026-11-06 17:19 ` [PATCH v6 06/16] printk: Prefer the console either via name or devname exclusively Petr Mladek
2026-11-06 17:19 ` [PATCH v6 07/16] printk: Check that index is not defined when a console is preferred via devname Petr Mladek
2026-11-06 17:19 ` [PATCH v6 08/16] printk: Ensure consistent name and devname when updating preferred console Petr Mladek
2026-11-06 17:19 ` [PATCH v6 09/16] printk: Do not quietly ignore adding entry for a preferred console when there is no space Petr Mladek
2026-11-06 17:19 ` [PATCH v6 10/16] printk: Allow to debug misuse of add_or_update_preferred_console() Petr Mladek
2026-11-06 17:19 ` [PATCH v6 11/16] console/braille: Lock console->setup() call during the registration Petr Mladek
2026-11-06 17:19 ` [PATCH v6 12/16] printk: Separate code for enabling console Petr Mladek
2026-11-06 17:19 ` [PATCH v6 13/16] printk: Try to register each console as Braille first Petr Mladek
2026-11-06 17:19 ` [PATCH v6 14/16] printk: Do not set Braille console as preferred_console Petr Mladek
2026-11-06 17:19 ` [PATCH v6 15/16] printk: Modify try_enable_default_console() to return error/success Petr Mladek
2026-11-06 17:19 ` [PATCH v6 16/16] printk: Try enable preferred consoles only when there are any Petr Mladek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®