diff mbox series

[v2] fbcon: Silence fbcon logo on 'quiet' boots

Message ID 20181029153258.7516-1-prarit@redhat.com (mailing list archive)
State New, archived
Headers show
Series [v2] fbcon: Silence fbcon logo on 'quiet' boots | expand

Commit Message

Prarit Bhargava Oct. 29, 2018, 3:32 p.m. UTC
A variant of this patch has been in Fedora since at least 2010 and
AFAWCT there haven't been any complaints about the change in behavior.

https://src.fedoraproject.org/cgit/rpms/kernel.git/tree/silence-fbcon-logo.patch

P.

---8<---

On text-based systems the 'quiet' boot option will show printk levels
higher than CONSOLE_LOGLEVEL_QUIET.  The displaying of the Tux logo
during boot can cause some consoles to lose display data and as a result
confuse the end user.

Do not display the Tux logo on systems that are in 'quiet' boot.

v2: It helps to commit all my changes before sending them.  Remove extra
bracket.

Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Marko Myllynen <myllynen@redhat.com>
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Thierry Reding <treding@nvidia.com>
Cc: Yisheng Xie <ysxie@foxmail.com>
Cc: dri-devel@lists.freedesktop.org
---
 drivers/video/fbdev/core/fbcon.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Comments

kernel test robot Oct. 30, 2018, 5:43 a.m. UTC | #1
Hi Prarit,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on sof-driver-fuweitax/master]
[also build test ERROR on v4.19 next-20181029]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Prarit-Bhargava/fbcon-Silence-fbcon-logo-on-quiet-boots/20181029-233506
base:   https://github.com/fuweitax/linux master
config: x86_64-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   kernel/module.c:257:18: warning: symbol 'kdb_modules' was not declared. Should it be static?
>> kernel/module.c:3915:41: error: incompatible types in comparison expression (different address spaces)
   kernel/module.c:4050:28: error: incompatible types in comparison expression (different address spaces)
   kernel/module.c:4069:41: error: incompatible types in comparison expression (different address spaces)

vim +3915 kernel/module.c

2e7bac53 Rusty Russell    2016-02-03  3907  
^1da177e Linus Torvalds   2005-04-16  3908  static const char *get_ksymbol(struct module *mod,
^1da177e Linus Torvalds   2005-04-16  3909  			       unsigned long addr,
^1da177e Linus Torvalds   2005-04-16  3910  			       unsigned long *size,
^1da177e Linus Torvalds   2005-04-16  3911  			       unsigned long *offset)
^1da177e Linus Torvalds   2005-04-16  3912  {
^1da177e Linus Torvalds   2005-04-16  3913  	unsigned int i, best = 0;
^1da177e Linus Torvalds   2005-04-16  3914  	unsigned long nextval;
8244062e Rusty Russell    2016-02-03 @3915  	struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms);
^1da177e Linus Torvalds   2005-04-16  3916  
^1da177e Linus Torvalds   2005-04-16  3917  	/* At worse, next value is at end of module */
a06f6211 Masami Hiramatsu 2009-01-06  3918  	if (within_module_init(addr, mod))
7523e4dc Rusty Russell    2015-11-26  3919  		nextval = (unsigned long)mod->init_layout.base+mod->init_layout.text_size;
^1da177e Linus Torvalds   2005-04-16  3920  	else
7523e4dc Rusty Russell    2015-11-26  3921  		nextval = (unsigned long)mod->core_layout.base+mod->core_layout.text_size;
^1da177e Linus Torvalds   2005-04-16  3922  
25985edc Lucas De Marchi  2011-03-30  3923  	/* Scan for closest preceding symbol, and next symbol. (ELF
^1da177e Linus Torvalds   2005-04-16  3924  	   starts real symbols at 1). */
8244062e Rusty Russell    2016-02-03  3925  	for (i = 1; i < kallsyms->num_symtab; i++) {
8244062e Rusty Russell    2016-02-03  3926  		if (kallsyms->symtab[i].st_shndx == SHN_UNDEF)
^1da177e Linus Torvalds   2005-04-16  3927  			continue;
^1da177e Linus Torvalds   2005-04-16  3928  
^1da177e Linus Torvalds   2005-04-16  3929  		/* We ignore unnamed symbols: they're uninformative
^1da177e Linus Torvalds   2005-04-16  3930  		 * and inserted at a whim. */
8244062e Rusty Russell    2016-02-03  3931  		if (*symname(kallsyms, i) == '\0'
8244062e Rusty Russell    2016-02-03  3932  		    || is_arm_mapping_symbol(symname(kallsyms, i)))
2e7bac53 Rusty Russell    2016-02-03  3933  			continue;
2e7bac53 Rusty Russell    2016-02-03  3934  
8244062e Rusty Russell    2016-02-03  3935  		if (kallsyms->symtab[i].st_value <= addr
8244062e Rusty Russell    2016-02-03  3936  		    && kallsyms->symtab[i].st_value > kallsyms->symtab[best].st_value)
^1da177e Linus Torvalds   2005-04-16  3937  			best = i;
8244062e Rusty Russell    2016-02-03  3938  		if (kallsyms->symtab[i].st_value > addr
8244062e Rusty Russell    2016-02-03  3939  		    && kallsyms->symtab[i].st_value < nextval)
8244062e Rusty Russell    2016-02-03  3940  			nextval = kallsyms->symtab[i].st_value;
^1da177e Linus Torvalds   2005-04-16  3941  	}
^1da177e Linus Torvalds   2005-04-16  3942  
^1da177e Linus Torvalds   2005-04-16  3943  	if (!best)
^1da177e Linus Torvalds   2005-04-16  3944  		return NULL;
^1da177e Linus Torvalds   2005-04-16  3945  
ffb45122 Alexey Dobriyan  2007-05-08  3946  	if (size)
8244062e Rusty Russell    2016-02-03  3947  		*size = nextval - kallsyms->symtab[best].st_value;
ffb45122 Alexey Dobriyan  2007-05-08  3948  	if (offset)
8244062e Rusty Russell    2016-02-03  3949  		*offset = addr - kallsyms->symtab[best].st_value;
8244062e Rusty Russell    2016-02-03  3950  	return symname(kallsyms, best);
^1da177e Linus Torvalds   2005-04-16  3951  }
^1da177e Linus Torvalds   2005-04-16  3952  

:::::: The code at line 3915 was first introduced by commit
:::::: 8244062ef1e54502ef55f54cced659913f244c3e modules: fix longstanding /proc/kallsyms vs module insertion race.

:::::: TO: Rusty Russell <rusty@rustcorp.com.au>
:::::: CC: Rusty Russell <rusty@rustcorp.com.au>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox series

Patch

diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index 75ebbbf0a1fb..53fc151f3f7b 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -650,11 +650,14 @@  static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
 		kfree(save);
 	}
 
+	if (logo_shown == FBCON_LOGO_DONTSHOW)
+		return;
+
 	if (logo_lines > vc->vc_bottom) {
 		logo_shown = FBCON_LOGO_CANSHOW;
 		printk(KERN_INFO
 		       "fbcon_init: disable boot-logo (boot-logo bigger than screen).\n");
-	} else if (logo_shown != FBCON_LOGO_DONTSHOW) {
+	} else {
 		logo_shown = FBCON_LOGO_DRAW;
 		vc->vc_top = logo_lines;
 	}
@@ -1052,7 +1055,7 @@  static void fbcon_init(struct vc_data *vc, int init)
 	struct vc_data **default_mode = vc->vc_display_fg;
 	struct vc_data *svc = *default_mode;
 	struct display *t, *p = &fb_display[vc->vc_num];
-	int logo = 1, new_rows, new_cols, rows, cols, charcnt = 256;
+	int new_rows, new_cols, rows, cols, charcnt = 256;
 	int cap, ret;
 
 	if (info_idx == -1 || info == NULL)
@@ -1060,9 +1063,9 @@  static void fbcon_init(struct vc_data *vc, int init)
 
 	cap = info->flags;
 
-	if (vc != svc || logo_shown == FBCON_LOGO_DONTSHOW ||
+	if (vc != svc || console_loglevel <= CONSOLE_LOGLEVEL_QUIET ||
 	    (info->fix.type == FB_TYPE_TEXT))
-		logo = 0;
+		logo_shown = FBCON_LOGO_DONTSHOW;
 
 	if (var_to_display(p, &info->var, info))
 		return;
@@ -1178,7 +1181,7 @@  static void fbcon_init(struct vc_data *vc, int init)
 	} else
 		vc_resize(vc, new_cols, new_rows);
 
-	if (logo)
+	if (logo_shown != FBCON_LOGO_DONTSHOW)
 		fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows);
 
 	if (vc == svc && softback_buf)