Re: [PATCH v4 04/11] printk: Separate code for adding/updating preferred console metadata
From: John Ogness
Date: Tue Jul 14 2026 - 10:40:39 EST
On 2026-06-04, Petr Mladek <pmladek@xxxxxxxx> wrote:
> The logic for adding or updating a preferred console is currently
> duplicated within __add_preferred_console(), making the code difficult
> to follow and prone to consistency issues.
>
> Introduce update_preferred_console() to centralize the initialization
> and updating of struct preferred_console entries. This refactoring
> explicitly defines and enforces the following rules:
>
> 1. Console names and/or indexes are not set when a console is preferred
> via devname; these are resolved later during device matching.
> 2. Console names are only added alongside a valid index.
> 3. Only matching entries are updated.
> 4. Console and Braille options are never cleared. They are updated
> only via the command line.
> 5. The global 'preferred_dev_console' index and 'console_set_on_cmdline'
> flag are updated consistently.
>
> Additionally, rename braille_set_options() to braille_update_options()
> to better reflect its conditional behavior.
>
> Behavior change:
>
> The original code never updated the preferred console options
> when it was preferred more times, e.g. via the command line
> and/or some platform specific code, e.g. SPCR or device tree.
>
> The new code explicitly allows to update the console options
> when they are preferred over the command line.
>
> It mostly worked even before but only because the command line was
> processed early enough before handling SPCR, device tree, or other
> platform specific init code.
As you previously mentioned, this is a recipe for regressions. IMHO the
real issue is not that the behavior is changed, but rather that there is
no official ordering for SPCR/DT/command-line across all platforms.
Also, although a later specification can override previous options, it
cannot clear them.
I am just wondering if the previous behavior should be preserved until
someone implements a full solution with proper official option ordering
and override capabilities.
John