Messages in this thread Patch in this message | | | Date | Tue, 8 Feb 2022 16:55:25 +0100 | From | Petr Mladek <> | Subject | Re: [PATCH] printk: Set console_set_on_cmdline=1 when using console="" or console=null |
| |
On Fri 2022-01-28 00:00:52, Andre Kalb wrote: > In case of using console="" or console=null set console_set_on_cmdline=1 > to disable chosen{ "stdout-path" } node from devicetree. > > To jump out from drivers/of/base.c, line 2087 of_console_check function > with false.
It makes sense. I would just fix it slightly different way, see below.
> Signed-off-by: Andre Kalb <andre.kalb@sma.de> > --- > kernel/printk/printk.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c > index 82abfaf3c2aa..df5ab35b8af2 100644 > --- a/kernel/printk/printk.c > +++ b/kernel/printk/printk.c > @@ -2385,6 +2385,7 @@ static int __init console_setup(char *str) > */ > if (str[0] == 0 || strcmp(str, "null") == 0) { > __add_preferred_console("ttynull", 0, NULL, NULL, > true); > + console_set_on_cmdline = 1;
We basically always need to set it when __add_preferred_console() is called with user_specified == true.
Therefore, we should move the assigment into __add_preferred_console(). We should do something like:
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 82abfaf3c2aa..3654695ca5d2 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2324,6 +2324,15 @@ asmlinkage __visible void early_printk(const char *fmt, ...) } #endif +static void set_user_specified(struct console_cmdline *c, bool user_specified) +{ + if (!user_specified) + return; + + c->user_specified = true; + console_set_on_cmdline = 1; +} + static int __add_preferred_console(char *name, int idx, char *options, char *brl_options, bool user_specified) { @@ -2340,8 +2349,7 @@ 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; + set_user_specified(c, user_specified); return 0; } } @@ -2351,7 +2359,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; + set_user_specified(c, user_specified); braille_set_options(c, brl_options); c->index = idx; @@ -2417,7 +2425,6 @@ static int __init console_setup(char *str) *s = 0; __add_preferred_console(buf, idx, options, brl_options, true); - console_set_on_cmdline = 1; return 1; } __setup("console=", console_setup);
Best Regards, Petr
| |