Messages in this thread | | | Date | Wed, 11 Nov 2020 14:52:48 -0800 | From | Guenter Roeck <> | Subject | Re: [PATCH 2/2] printk/console: Allow to disable console output by using console="" or console=null |
| |
On Wed, Nov 11, 2020 at 02:54:50PM +0100, Petr Mladek wrote: > The commit 48021f98130880dd74 ("printk: handle blank console arguments > passed in.") prevented crash caused by empty console= parameter value. > > Unfortunately, this value is widely used on Chromebooks to disable > the console output. The above commit caused performance regression > because the messages were pushed on slow console even though nobody > was watching it. > > Use ttynull driver explicitly for console="" and console=null > parameters. It has been created for exactly this purpose. > > It causes that preferred_console is set. As a result, ttySX and ttyX > are not used as a fallback. And only ttynull console gets registered by > default. > > It still allows to register other consoles either by additional console= > parameters or SPCR. It prevents regression because it worked this way even > before. Also it is a sane semantic. Preventing output on all consoles > should be done another way, for example, by introducing mute_console > parameter. > > Link: https://lore.kernel.org/r/20201006025935.GA597@jagdpanzerIV.localdomain > Suggested-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> > Signed-off-by: Petr Mladek <pmladek@suse.com>
Reviewed-and-tested-by: Guenter Roeck <linux@roeck-us.net>
> --- > kernel/printk/printk.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c > index fe64a49344bf..ac440b879a2c 100644 > --- a/kernel/printk/printk.c > +++ b/kernel/printk/printk.c > @@ -2189,8 +2189,15 @@ static int __init console_setup(char *str) > char *s, *options, *brl_options = NULL; > int idx; > > - if (str[0] == 0) > + /* > + * console="" or console=null have been suggested as a way to > + * disable console output. Use ttynull that has been created > + * for exacly this purpose. > + */ > + if (str[0] == 0 || strcmp(str, "null") == 0) { > + __add_preferred_console("ttynull", 0, NULL, NULL, true); > return 1; > + } > > if (_braille_console_setup(&str, &brl_options)) > return 1; > -- > 2.26.2 >
| |