Re: [PATCH v3 2/3] printk: Fix preferred console selection with multiple matches

From: Sergey Senozhatsky
Date: Thu Feb 13 2020 - 00:52:42 EST


On (20/02/06 15:02), Benjamin Herrenschmidt wrote:
[..]
> static int __add_preferred_console(char *name, int idx, char *options,
> - char *brl_options)
> + char *brl_options, bool user_specified)
> {
> struct console_cmdline *c;
> int i;
> @@ -2131,6 +2131,8 @@ static int __add_preferred_console(char *name, int idx, char *options,
> if (strcmp(c->name, name) == 0 && c->index == idx) {
> if (!brl_options)
> preferred_console = i;
> + if (user_specified)
> + c->user_specified = true;
> return 0;
> }
> }
> @@ -2140,6 +2142,7 @@ static int __add_preferred_console(char *name, int idx, char *options,
> preferred_console = i;
> strlcpy(c->name, name, sizeof(c->name));
> c->options = options;
> + c->user_specified = user_specified;
> braille_set_options(c, brl_options);
>
> c->index = idx;
> @@ -2194,7 +2197,7 @@ static int __init console_setup(char *str)
> idx = simple_strtoul(s, NULL, 10);
> *s = 0;
>
> - __add_preferred_console(buf, idx, options, brl_options);
> + __add_preferred_console(buf, idx, options, brl_options, true);
> console_set_on_cmdline = 1;
> return 1;
> }
> @@ -2215,7 +2218,7 @@ __setup("console=", console_setup);
> */
> int add_preferred_console(char *name, int idx, char *options)
> {
> - return __add_preferred_console(name, idx, options, NULL);
> + return __add_preferred_console(name, idx, options, NULL, false);
> }

A silly question:

Can the same console first be added by
console_setup()->__add_preferred_console(true)
and then by
add_preferred_console()->__add_preferred_console(false)

-ss