diff mbox series

fbcon: Silence fbcon logo on 'quiet' boots

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

Commit Message

Prarit Bhargava Oct. 29, 2018, 1:02 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.

Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Marko Myllynen <myllynen@redhat.com>
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
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
 drivers/video/fbdev/core/fbcon.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Comments

kernel test robot Oct. 29, 2018, 1:56 p.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-211617
base:   https://github.com/fuweitax/linux master
config: m68k-multi_defconfig (attached as .config)
compiler: m68k-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.2.0 make.cross ARCH=m68k 

All errors (new ones prefixed by >>):

   drivers/video/fbdev/core/fbcon.c: In function 'fbcon_prepare_logo':
   drivers/video/fbdev/core/fbcon.c:680:13: error: invalid storage class for function 'set_blitting_type'
    static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
                ^~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:680:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
    static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
    ^~~~~~
   drivers/video/fbdev/core/fbcon.c:690:12: error: invalid storage class for function 'fbcon_invalid_charcount'
    static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
               ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:698:12: error: invalid storage class for function 'con2fb_acquire_newinfo'
    static int con2fb_acquire_newinfo(struct vc_data *vc, struct fb_info *info,
               ^~~~~~~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:734:12: error: invalid storage class for function 'con2fb_release_oldinfo'
    static int con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo,
               ^~~~~~~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:780:13: error: invalid storage class for function 'con2fb_init_display'
    static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
                ^~~~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:825:12: error: invalid storage class for function 'set_con2fb_map'
    static int set_con2fb_map(int unit, int newidx, int user)
               ^~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:882:12: error: invalid storage class for function 'var_to_display'
    static int var_to_display(struct display *disp,
               ^~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:906:13: error: invalid storage class for function 'display_to_var'
    static void display_to_var(struct fb_var_screeninfo *var,
                ^~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:925:20: error: invalid storage class for function 'fbcon_startup'
    static const char *fbcon_startup(void)
                       ^~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1036:13: error: invalid storage class for function 'fbcon_init'
    static void fbcon_init(struct vc_data *vc, int init)
                ^~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1183:13: error: invalid storage class for function 'fbcon_free_font'
    static void fbcon_free_font(struct display *p, bool freefont)
                ^~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1191:13: error: invalid storage class for function 'set_vc_hi_font'
    static void set_vc_hi_font(struct vc_data *vc, bool set);
                ^~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1193:13: error: invalid storage class for function 'fbcon_deinit'
    static void fbcon_deinit(struct vc_data *vc)
                ^~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c: In function 'fbcon_deinit':
>> drivers/video/fbdev/core/fbcon.c:1229:3: error: implicit declaration of function 'set_vc_hi_font'; did you mean 'seq_path_root'? [-Werror=implicit-function-declaration]
      set_vc_hi_font(vc, false);
      ^~~~~~~~~~~~~~
      seq_path_root
   drivers/video/fbdev/core/fbcon.c: In function 'fbcon_prepare_logo':
   drivers/video/fbdev/core/fbcon.c:1262:13: error: invalid storage class for function 'fbcon_clear'
    static void fbcon_clear(struct vc_data *vc, int sy, int sx, int height,
                ^~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1300:13: error: invalid storage class for function 'fbcon_putcs'
    static void fbcon_putcs(struct vc_data *vc, const unsigned short *s,
                ^~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1313:13: error: invalid storage class for function 'fbcon_putc'
    static void fbcon_putc(struct vc_data *vc, int c, int ypos, int xpos)
                ^~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1321:13: error: invalid storage class for function 'fbcon_clear_margins'
    static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
                ^~~~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1330:13: error: invalid storage class for function 'fbcon_cursor'
    static void fbcon_cursor(struct vc_data *vc, int mode)
                ^~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1365:13: error: invalid storage class for function 'fbcon_set_disp'
    static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
                ^~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1433:24: error: invalid storage class for function 'ywrap_up'
    static __inline__ void ywrap_up(struct vc_data *vc, int count)
                           ^~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1452:24: error: invalid storage class for function 'ywrap_down'
    static __inline__ void ywrap_down(struct vc_data *vc, int count)
                           ^~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1471:24: error: invalid storage class for function 'ypan_up'
    static __inline__ void ypan_up(struct vc_data *vc, int count)
                           ^~~~~~~
   drivers/video/fbdev/core/fbcon.c:1495:24: error: invalid storage class for function 'ypan_up_redraw'
    static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count)
                           ^~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1519:24: error: invalid storage class for function 'ypan_down'
    static __inline__ void ypan_down(struct vc_data *vc, int count)
                           ^~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1543:24: error: invalid storage class for function 'ypan_down_redraw'
    static __inline__ void ypan_down_redraw(struct vc_data *vc, int t, int count)
                           ^~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1567:13: error: invalid storage class for function 'fbcon_redraw_softback'
    static void fbcon_redraw_softback(struct vc_data *vc, struct display *p,
                ^~~~~~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1660:13: error: invalid storage class for function 'fbcon_redraw_move'
    static void fbcon_redraw_move(struct vc_data *vc, struct display *p,
                ^~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1694:13: error: invalid storage class for function 'fbcon_redraw_blit'
    static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
                ^~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1744:13: error: invalid storage class for function 'fbcon_redraw'
    static void fbcon_redraw(struct vc_data *vc, struct display *p,
                ^~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1799:20: error: invalid storage class for function 'fbcon_softback_note'
    static inline void fbcon_softback_note(struct vc_data *vc, int t,
                       ^~~~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:1824:13: error: invalid storage class for function 'fbcon_scroll'
    static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b,
                ^~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2028:13: error: invalid storage class for function 'fbcon_bmove'
    static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx,
                ^~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2051:13: error: invalid storage class for function 'fbcon_bmove_rec'
    static void fbcon_bmove_rec(struct vc_data *vc, struct display *p, int sy, int sx,
                ^~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2093:13: error: invalid storage class for function 'updatescrollmode'
    static void updatescrollmode(struct display *p,
                ^~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2140:12: error: invalid storage class for function 'fbcon_resize'
    static int fbcon_resize(struct vc_data *vc, unsigned int width,
               ^~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2186:12: error: invalid storage class for function 'fbcon_switch'
    static int fbcon_switch(struct vc_data *vc)
               ^~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2325:13: error: invalid storage class for function 'fbcon_generic_blank'
    static void fbcon_generic_blank(struct vc_data *vc, struct fb_info *info,
                ^~~~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2350:12: error: invalid storage class for function 'fbcon_blank'
    static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch)
               ^~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2392:12: error: invalid storage class for function 'fbcon_debug_enter'
    static int fbcon_debug_enter(struct vc_data *vc)
               ^~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2405:12: error: invalid storage class for function 'fbcon_debug_leave'
    static int fbcon_debug_leave(struct vc_data *vc)
               ^~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2416:12: error: invalid storage class for function 'fbcon_get_font'
    static int fbcon_get_font(struct vc_data *vc, struct console_font *font)
               ^~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2468:13: error: invalid storage class for function 'set_vc_hi_font'
    static void set_vc_hi_font(struct vc_data *vc, bool set)
                ^~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2528:12: error: invalid storage class for function 'fbcon_do_set_font'
    static int fbcon_do_set_font(struct vc_data *vc, int w, int h,
               ^~~~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2579:12: error: invalid storage class for function 'fbcon_copy_font'
    static int fbcon_copy_font(struct vc_data *vc, int con)
               ^~~~~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c:2601:12: error: invalid storage class for function 'fbcon_set_font'
    static int fbcon_set_font(struct vc_data *vc, struct console_font *font,
               ^~~~~~~~~~~~~~

vim +1229 drivers/video/fbdev/core/fbcon.c

e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1190  
8aac7f34 drivers/video/console/fbcon.c Takashi Iwai       2017-01-11 @1191  static void set_vc_hi_font(struct vc_data *vc, bool set);
8aac7f34 drivers/video/console/fbcon.c Takashi Iwai       2017-01-11  1192  
^1da177e drivers/video/console/fbcon.c Linus Torvalds     2005-04-16  1193  static void fbcon_deinit(struct vc_data *vc)
^1da177e drivers/video/console/fbcon.c Linus Torvalds     2005-04-16  1194  {
^1da177e drivers/video/console/fbcon.c Linus Torvalds     2005-04-16  1195  	struct display *p = &fb_display[vc->vc_num];
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1196  	struct fb_info *info;
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1197  	struct fbcon_ops *ops;
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1198  	int idx;
ae128786 drivers/video/console/fbcon.c Dave Airlie        2013-01-24  1199  	bool free_font = true;
^1da177e drivers/video/console/fbcon.c Linus Torvalds     2005-04-16  1200  
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1201  	idx = con2fb_map[vc->vc_num];
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1202  
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1203  	if (idx == -1)
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1204  		goto finished;
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1205  
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1206  	info = registered_fb[idx];
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1207  
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1208  	if (!info)
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1209  		goto finished;
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1210  
ae128786 drivers/video/console/fbcon.c Dave Airlie        2013-01-24  1211  	if (info->flags & FBINFO_MISC_FIRMWARE)
ae128786 drivers/video/console/fbcon.c Dave Airlie        2013-01-24  1212  		free_font = false;
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1213  	ops = info->fbcon_par;
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1214  
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1215  	if (!ops)
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1216  		goto finished;
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1217  
6ca8dfd7 drivers/video/console/fbcon.c Jiri Slaby         2016-06-23  1218  	if (con_is_visible(vc))
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1219  		fbcon_del_cursor_timer(info);
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1220  
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1221  	ops->flags &= ~FBCON_FLAGS_INIT;
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1222  finished:
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1223  
ae128786 drivers/video/console/fbcon.c Dave Airlie        2013-01-24  1224  	fbcon_free_font(p, free_font);
e6637d54 drivers/video/console/fbcon.c Mika Kuoppala      2013-04-22  1225  	if (free_font)
e6637d54 drivers/video/console/fbcon.c Mika Kuoppala      2013-04-22  1226  		vc->vc_font.data = NULL;
ae128786 drivers/video/console/fbcon.c Dave Airlie        2013-01-24  1227  
8aac7f34 drivers/video/console/fbcon.c Takashi Iwai       2017-01-11  1228  	if (vc->vc_hi_font_mask)
8aac7f34 drivers/video/console/fbcon.c Takashi Iwai       2017-01-11 @1229  		set_vc_hi_font(vc, false);
8aac7f34 drivers/video/console/fbcon.c Takashi Iwai       2017-01-11  1230  
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1231  	if (!con_is_bound(&fb_con))
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1232  		fbcon_exit();
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1233  
e614b18d drivers/video/console/fbcon.c Antonino A. Daplas 2006-06-26  1234  	return;
^1da177e drivers/video/console/fbcon.c Linus Torvalds     2005-04-16  1235  }
^1da177e drivers/video/console/fbcon.c Linus Torvalds     2005-04-16  1236  

:::::: The code at line 1229 was first introduced by commit
:::::: 8aac7f34369726d1a158788ae8aff3002d5eb528 fbcon: Fix vc attr at deinit

:::::: TO: Takashi Iwai <tiwai@suse.de>
:::::: CC: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
kernel test robot Oct. 29, 2018, 1:57 p.m. UTC | #2
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-211617
base:   https://github.com/fuweitax/linux master
config: i386-randconfig-x005-201843 (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=i386 

All error/warnings (new ones prefixed by >>):

   drivers/video/fbdev/core/fbcon.c: In function 'fbcon_prepare_logo':
>> drivers/video/fbdev/core/fbcon.c:655:13: error: invalid storage class for function 'set_blitting_type'
    static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
                ^~~~~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:655:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
    static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
    ^~~~~~
>> drivers/video/fbdev/core/fbcon.c:669:12: error: invalid storage class for function 'fbcon_invalid_charcount'
    static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
               ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:698:12: error: invalid storage class for function 'con2fb_acquire_newinfo'
    static int con2fb_acquire_newinfo(struct vc_data *vc, struct fb_info *info,
               ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:734:12: error: invalid storage class for function 'con2fb_release_oldinfo'
    static int con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo,
               ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:780:13: error: invalid storage class for function 'con2fb_init_display'
    static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
                ^~~~~~~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:825:12: error: invalid storage class for function 'set_con2fb_map'
    static int set_con2fb_map(int unit, int newidx, int user)
               ^~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:882:12: error: invalid storage class for function 'var_to_display'
    static int var_to_display(struct display *disp,
               ^~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:906:13: error: invalid storage class for function 'display_to_var'
    static void display_to_var(struct fb_var_screeninfo *var,
                ^~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:925:20: error: invalid storage class for function 'fbcon_startup'
    static const char *fbcon_startup(void)
                       ^~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:1036:13: error: invalid storage class for function 'fbcon_init'
    static void fbcon_init(struct vc_data *vc, int init)
                ^~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:1183:13: error: invalid storage class for function 'fbcon_free_font'
    static void fbcon_free_font(struct display *p, bool freefont)
                ^~~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:1191:13: error: invalid storage class for function 'set_vc_hi_font'
    static void set_vc_hi_font(struct vc_data *vc, bool set);
                ^~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:1193:13: error: invalid storage class for function 'fbcon_deinit'
    static void fbcon_deinit(struct vc_data *vc)
                ^~~~~~~~~~~~
   drivers/video/fbdev/core/fbcon.c: In function 'fbcon_deinit':
>> drivers/video/fbdev/core/fbcon.c:1229:3: error: implicit declaration of function 'set_vc_hi_font'; did you mean 'set_page_zone'? [-Werror=implicit-function-declaration]
      set_vc_hi_font(vc, false);
      ^~~~~~~~~~~~~~
      set_page_zone
   drivers/video/fbdev/core/fbcon.c: In function 'fbcon_prepare_logo':
>> drivers/video/fbdev/core/fbcon.c:1262:13: error: invalid storage class for function 'fbcon_clear'
    static void fbcon_clear(struct vc_data *vc, int sy, int sx, int height,
                ^~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:1300:13: error: invalid storage class for function 'fbcon_putcs'
    static void fbcon_putcs(struct vc_data *vc, const unsigned short *s,
                ^~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:1313:13: error: invalid storage class for function 'fbcon_putc'
    static void fbcon_putc(struct vc_data *vc, int c, int ypos, int xpos)
                ^~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:1321:13: error: invalid storage class for function 'fbcon_clear_margins'
    static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
                ^~~~~~~~~~~~~~~~~~~
>> drivers/video/fbdev/core/fbcon.c:1330:13: error: invalid storage class for function 'fbcon_cursor'
    static void fbcon_cursor(struct vc_data *vc, int mode)
                ^~~~~~~~~~~~

vim +/set_blitting_type +655 drivers/video/fbdev/core/fbcon.c

^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  653  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  654  #ifdef CONFIG_FB_TILEBLITTING
b73deed3 drivers/video/console/fbcon.c    Antonino A. Daplas        2006-01-09 @655  static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  656  {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  657  	struct fbcon_ops *ops = info->fbcon_par;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  658  
b73deed3 drivers/video/console/fbcon.c    Antonino A. Daplas        2006-01-09  659  	ops->p = &fb_display[vc->vc_num];
ab767201 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-13  660  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  661  	if ((info->flags & FBINFO_MISC_TILEBLITTING))
b73deed3 drivers/video/console/fbcon.c    Antonino A. Daplas        2006-01-09  662  		fbcon_set_tileops(vc, info);
e4fc2761 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-08  663  	else {
b73deed3 drivers/video/console/fbcon.c    Antonino A. Daplas        2006-01-09  664  		fbcon_set_rotation(info);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  665  		fbcon_set_bitops(ops);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  666  	}
e4fc2761 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-08  667  }
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  668  
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08 @669  static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  670  {
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  671  	int err = 0;
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  672  
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  673  	if (info->flags & FBINFO_MISC_TILEBLITTING &&
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  674  	    info->tileops->fb_get_tilemax(info) < charcount)
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  675  		err = 1;
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  676  
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  677  	return err;
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  678  }
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  679  #else
b73deed3 drivers/video/console/fbcon.c    Antonino A. Daplas        2006-01-09  680  static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  681  {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  682  	struct fbcon_ops *ops = info->fbcon_par;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  683  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  684  	info->flags &= ~FBINFO_MISC_TILEBLITTING;
b73deed3 drivers/video/console/fbcon.c    Antonino A. Daplas        2006-01-09  685  	ops->p = &fb_display[vc->vc_num];
b73deed3 drivers/video/console/fbcon.c    Antonino A. Daplas        2006-01-09  686  	fbcon_set_rotation(info);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  687  	fbcon_set_bitops(ops);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  688  }
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  689  
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  690  static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  691  {
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  692  	return 0;
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  693  }
38b4982c drivers/video/console/fbcon.c    Antonino A. Daplas        2007-05-08  694  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  695  #endif /* CONFIG_MISC_TILEBLITTING */
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  696  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  697  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16 @698  static int con2fb_acquire_newinfo(struct vc_data *vc, struct fb_info *info,
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  699  				  int unit, int oldidx)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  700  {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  701  	struct fbcon_ops *ops = NULL;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  702  	int err = 0;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  703  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  704  	if (!try_module_get(info->fbops->owner))
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  705  		err = -ENODEV;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  706  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  707  	if (!err && info->fbops->fb_open &&
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  708  	    info->fbops->fb_open(info, 0))
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  709  		err = -ENODEV;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  710  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  711  	if (!err) {
a39bc34e drivers/video/console/fbcon.c    Antonino A. Daplas        2006-01-09  712  		ops = kzalloc(sizeof(struct fbcon_ops), GFP_KERNEL);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  713  		if (!ops)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  714  			err = -ENOMEM;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  715  	}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  716  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  717  	if (!err) {
a1e533ec drivers/video/console/fbcon.c    Jean-Philippe Brucker     2016-02-15  718  		ops->cur_blink_jiffies = HZ / 5;
6c789357 drivers/video/fbdev/core/fbcon.c Kees Cook                 2017-11-10  719  		ops->info = info;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  720  		info->fbcon_par = ops;
d1baa4ff drivers/video/console/fbcon.c    Antonino A. Daplas        2007-07-17  721  
d1baa4ff drivers/video/console/fbcon.c    Antonino A. Daplas        2007-07-17  722  		if (vc)
b73deed3 drivers/video/console/fbcon.c    Antonino A. Daplas        2006-01-09  723  			set_blitting_type(vc, info);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  724  	}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  725  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  726  	if (err) {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  727  		con2fb_map[unit] = oldidx;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  728  		module_put(info->fbops->owner);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  729  	}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  730  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  731  	return err;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  732  }
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  733  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16 @734  static int con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo,
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  735  				  struct fb_info *newinfo, int unit,
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  736  				  int oldidx, int found)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  737  {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  738  	struct fbcon_ops *ops = oldinfo->fbcon_par;
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  739  	int err = 0, ret;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  740  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  741  	if (oldinfo->fbops->fb_release &&
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  742  	    oldinfo->fbops->fb_release(oldinfo, 0)) {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  743  		con2fb_map[unit] = oldidx;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  744  		if (!found && newinfo->fbops->fb_release)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  745  			newinfo->fbops->fb_release(newinfo, 0);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  746  		if (!found)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  747  			module_put(newinfo->fbops->owner);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  748  		err = -ENODEV;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  749  	}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  750  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  751  	if (!err) {
88fb2c6e drivers/video/console/fbcon.c    Antonino A. Daplas        2005-09-09  752  		fbcon_del_cursor_timer(oldinfo);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  753  		kfree(ops->cursor_state.mask);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  754  		kfree(ops->cursor_data);
7a966fbd drivers/video/console/fbcon.c    Masami Ichikawa           2014-04-23  755  		kfree(ops->cursor_src);
e4fc2761 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-08  756  		kfree(ops->fontbuffer);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  757  		kfree(oldinfo->fbcon_par);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  758  		oldinfo->fbcon_par = NULL;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  759  		module_put(oldinfo->fbops->owner);
dd0314f7 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-07  760  		/*
dd0314f7 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-07  761  		  If oldinfo and newinfo are driving the same hardware,
dd0314f7 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-07  762  		  the fb_release() method of oldinfo may attempt to
dd0314f7 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-07  763  		  restore the hardware state.  This will leave the
dd0314f7 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-07  764  		  newinfo in an undefined state. Thus, a call to
dd0314f7 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-07  765  		  fb_set_par() may be needed for the newinfo.
dd0314f7 drivers/video/console/fbcon.c    Antonino A. Daplas        2005-11-07  766  		*/
5f4dc28b drivers/video/console/fbcon.c    Keith Packard             2014-01-20  767  		if (newinfo && newinfo->fbops->fb_set_par) {
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  768  			ret = newinfo->fbops->fb_set_par(newinfo);
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  769  
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  770  			if (ret)
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  771  				printk(KERN_ERR "con2fb_release_oldinfo: "
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  772  					"detected unhandled fb_set_par error, "
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  773  					"error code %d\n", ret);
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  774  		}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  775  	}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  776  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  777  	return err;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  778  }
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  779  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16 @780  static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  781  				int unit, int show_logo)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  782  {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  783  	struct fbcon_ops *ops = info->fbcon_par;
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  784  	int ret;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  785  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  786  	ops->currcon = fg_console;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  787  
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  788  	if (info->fbops->fb_set_par && !(ops->flags & FBCON_FLAGS_INIT)) {
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  789  		ret = info->fbops->fb_set_par(info);
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  790  
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  791  		if (ret)
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  792  			printk(KERN_ERR "con2fb_init_display: detected "
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  793  				"unhandled fb_set_par error, "
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  794  				"error code %d\n", ret);
0fcf6ada drivers/video/console/fbcon.c    Florian Tobias Schandinat 2009-09-22  795  	}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  796  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  797  	ops->flags |= FBCON_FLAGS_INIT;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  798  	ops->graphics = 0;
d1baa4ff drivers/video/console/fbcon.c    Antonino A. Daplas        2007-07-17  799  	fbcon_set_disp(info, &info->var, unit);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  800  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  801  	if (show_logo) {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  802  		struct vc_data *fg_vc = vc_cons[fg_console].d;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  803  		struct fb_info *fg_info =
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  804  			registered_fb[con2fb_map[fg_console]];
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  805  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  806  		fbcon_prepare_logo(fg_vc, fg_info, fg_vc->vc_cols,
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  807  				   fg_vc->vc_rows, fg_vc->vc_cols,
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  808  				   fg_vc->vc_rows);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  809  	}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  810  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  811  	update_screen(vc_cons[fg_console].d);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  812  }
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  813  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  814  /**
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  815   *	set_con2fb_map - map console to frame buffer device
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  816   *	@unit: virtual console number to map
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  817   *	@newidx: frame buffer index to map virtual console to
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  818   *      @user: user request
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  819   *
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  820   *	Maps a virtual console @unit to a frame buffer device
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  821   *	@newidx.
054430e7 drivers/video/console/fbcon.c    Dave Airlie               2013-01-25  822   *
054430e7 drivers/video/console/fbcon.c    Dave Airlie               2013-01-25  823   *	This should be called with the console lock held.
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  824   */
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16 @825  static int set_con2fb_map(int unit, int newidx, int user)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  826  {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  827  	struct vc_data *vc = vc_cons[unit].d;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  828  	int oldidx = con2fb_map[unit];
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  829  	struct fb_info *info = registered_fb[newidx];
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  830  	struct fb_info *oldinfo = NULL;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  831   	int found, err = 0;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  832  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  833  	if (oldidx == newidx)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  834  		return 0;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  835  
32b98bf8 drivers/video/console/fbcon.c    Dave Airlie               2010-12-21  836  	if (!info)
e614b18d drivers/video/console/fbcon.c    Antonino A. Daplas        2006-06-26  837  		return -EINVAL;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  838  
32b98bf8 drivers/video/console/fbcon.c    Dave Airlie               2010-12-21  839  	if (!search_for_mapped_con() || !con_is_bound(&fb_con)) {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  840  		info_idx = newidx;
054430e7 drivers/video/console/fbcon.c    Dave Airlie               2013-01-25  841  		return do_fbcon_takeover(0);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  842  	}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  843  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  844  	if (oldidx != -1)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  845  		oldinfo = registered_fb[oldidx];
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  846  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  847  	found = search_fb_in_map(newidx);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  848  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  849  	con2fb_map[unit] = newidx;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  850  	if (!err && !found)
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  851   		err = con2fb_acquire_newinfo(vc, info, unit, oldidx);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  852  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  853  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  854  	/*
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  855  	 * If old fb is not mapped to any of the consoles,
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  856  	 * fbcon should release it.
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  857  	 */
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  858   	if (!err && oldinfo && !search_fb_in_map(oldidx))
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  859   		err = con2fb_release_oldinfo(vc, oldinfo, info, unit, oldidx,
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  860   					     found);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  861  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  862   	if (!err) {
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  863   		int show_logo = (fg_console == 0 && !user &&
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  864   				 logo_shown != FBCON_LOGO_DONTSHOW);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  865  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  866   		if (!found)
88fb2c6e drivers/video/console/fbcon.c    Antonino A. Daplas        2005-09-09  867   			fbcon_add_cursor_timer(info);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  868   		con2fb_map_boot[unit] = newidx;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  869   		con2fb_init_display(vc, info, unit, show_logo);
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  870  	}
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  871  
e614b18d drivers/video/console/fbcon.c    Antonino A. Daplas        2006-06-26  872  	if (!search_fb_in_map(info_idx))
e614b18d drivers/video/console/fbcon.c    Antonino A. Daplas        2006-06-26  873  		info_idx = newidx;
e614b18d drivers/video/console/fbcon.c    Antonino A. Daplas        2006-06-26  874  
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  875   	return err;
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  876  }
^1da177e drivers/video/console/fbcon.c    Linus Torvalds            2005-04-16  877  

:::::: The code at line 655 was first introduced by commit
:::::: b73deed32d08740bdbf5f4aab43d988e4d135d95 [PATCH] fbcon: Sanitize fbcon

:::::: TO: Antonino A. Daplas <adaplas@gmail.com>
:::::: CC: Linus Torvalds <torvalds@g5.osdl.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Prarit Bhargava Oct. 29, 2018, 3:15 p.m. UTC | #3
On 10/29/2018 09:56 AM, kbuild test robot wrote:
> 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-211617
> base:   https://github.com/fuweitax/linux master
> config: m68k-multi_defconfig (attached as .config)
> compiler: m68k-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         GCC_VERSION=7.2.0 make.cross ARCH=m68k 
> 
> All errors (new ones prefixed by >>):
> 
>    drivers/video/fbdev/core/fbcon.c: In function 'fbcon_prepare_logo':
>    drivers/video/fbdev/core/fbcon.c:680:13: error: invalid storage class for function 'set_blitting_type'
>     static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
>                 ^~~~~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:680:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
>     static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
>     ^~~~~~
>    drivers/video/fbdev/core/fbcon.c:690:12: error: invalid storage class for function 'fbcon_invalid_charcount'
>     static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
>                ^~~~~~~~~~~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:698:12: error: invalid storage class for function 'con2fb_acquire_newinfo'
>     static int con2fb_acquire_newinfo(struct vc_data *vc, struct fb_info *info,
>                ^~~~~~~~~~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:734:12: error: invalid storage class for function 'con2fb_release_oldinfo'
>     static int con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo,
>                ^~~~~~~~~~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:780:13: error: invalid storage class for function 'con2fb_init_display'
>     static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
>                 ^~~~~~~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:825:12: error: invalid storage class for function 'set_con2fb_map'
>     static int set_con2fb_map(int unit, int newidx, int user)
>                ^~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:882:12: error: invalid storage class for function 'var_to_display'
>     static int var_to_display(struct display *disp,
>                ^~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:906:13: error: invalid storage class for function 'display_to_var'
>     static void display_to_var(struct fb_var_screeninfo *var,
>                 ^~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:925:20: error: invalid storage class for function 'fbcon_startup'
>     static const char *fbcon_startup(void)
>                        ^~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:1036:13: error: invalid storage class for function 'fbcon_init'
>     static void fbcon_init(struct vc_data *vc, int init)
>                 ^~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:1183:13: error: invalid storage class for function 'fbcon_free_font'
>     static void fbcon_free_font(struct display *p, bool freefont)
>                 ^~~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:1191:13: error: invalid storage class for function 'set_vc_hi_font'
>     static void set_vc_hi_font(struct vc_data *vc, bool set);
>                 ^~~~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c:1193:13: error: invalid storage class for function 'fbcon_deinit'
>     static void fbcon_deinit(struct vc_data *vc)
>                 ^~~~~~~~~~~~
>    drivers/video/fbdev/core/fbcon.c: In function 'fbcon_deinit':
>>> drivers/video/fbdev/core/fbcon.c:1229:3: error: implicit declaration of function 'set_vc_hi_font'; did you mean 'seq_path_root'? [-Werror=implicit-function-declaration]
>       set_vc_hi_font(vc, false);
>       ^~~~~~~~~~~~~~

Hmm ... this doesn't look like anything that is at fault with my patch.

There's a lot of warnings here, and perhaps another fix is required to make
sure that the configs are set correctly?  I can certainly take a look in
another patch but AFAICT this isn't an issue with my patch.

P.
Thierry Reding Oct. 29, 2018, 3:24 p.m. UTC | #4
On Mon, Oct 29, 2018 at 09:02:32AM -0400, Prarit Bhargava wrote:
> 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.
> 
> Signed-off-by: Prarit Bhargava <prarit@redhat.com>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Marko Myllynen <myllynen@redhat.com>
> 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
> Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
> ---
>  drivers/video/fbdev/core/fbcon.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
> index 75ebbbf0a1fb..a2f2c7ea11ef 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;
> +

You're missing a closing } here (well, you really shouldn't have the
opening { in the first place since this is a single line block.

That's what's causing the warnings from the 0-day builder.

Thierry
Prarit Bhargava Oct. 29, 2018, 3:30 p.m. UTC | #5
On 10/29/2018 11:24 AM, Thierry Reding wrote:
> On Mon, Oct 29, 2018 at 09:02:32AM -0400, Prarit Bhargava wrote:
>> 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.
>>
>> Signed-off-by: Prarit Bhargava <prarit@redhat.com>
>> Cc: Hans de Goede <hdegoede@redhat.com>
>> Cc: Marko Myllynen <myllynen@redhat.com>
>> 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
>> Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
>> ---
>>  drivers/video/fbdev/core/fbcon.c | 13 ++++++++-----
>>  1 file changed, 8 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
>> index 75ebbbf0a1fb..a2f2c7ea11ef 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;
>> +
> 
> You're missing a closing } here (well, you really shouldn't have the
> opening { in the first place since this is a single line block.
> 
> That's what's causing the warnings from the 0-day builder.

Will send v2.

P.

> 
> Thierry
>
Chen, Rong A Nov. 12, 2018, 3:18 a.m. UTC | #6
On 10/29/2018 11:15 PM, Prarit Bhargava wrote:
>
> On 10/29/2018 09:56 AM, kbuild test robot wrote:
>> 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-211617
>> base:   https://github.com/fuweitax/linux master
>> config: m68k-multi_defconfig (attached as .config)
>> compiler: m68k-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
>> reproduce:
>>          wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>          chmod +x ~/bin/make.cross
>>          # save the attached .config to linux build tree
>>          GCC_VERSION=7.2.0 make.cross ARCH=m68k
>>
>> All errors (new ones prefixed by >>):
>>
>>     drivers/video/fbdev/core/fbcon.c: In function 'fbcon_prepare_logo':
>>     drivers/video/fbdev/core/fbcon.c:680:13: error: invalid storage class for function 'set_blitting_type'
>>      static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
>>                  ^~~~~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:680:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
>>      static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
>>      ^~~~~~
>>     drivers/video/fbdev/core/fbcon.c:690:12: error: invalid storage class for function 'fbcon_invalid_charcount'
>>      static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
>>                 ^~~~~~~~~~~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:698:12: error: invalid storage class for function 'con2fb_acquire_newinfo'
>>      static int con2fb_acquire_newinfo(struct vc_data *vc, struct fb_info *info,
>>                 ^~~~~~~~~~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:734:12: error: invalid storage class for function 'con2fb_release_oldinfo'
>>      static int con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo,
>>                 ^~~~~~~~~~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:780:13: error: invalid storage class for function 'con2fb_init_display'
>>      static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
>>                  ^~~~~~~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:825:12: error: invalid storage class for function 'set_con2fb_map'
>>      static int set_con2fb_map(int unit, int newidx, int user)
>>                 ^~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:882:12: error: invalid storage class for function 'var_to_display'
>>      static int var_to_display(struct display *disp,
>>                 ^~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:906:13: error: invalid storage class for function 'display_to_var'
>>      static void display_to_var(struct fb_var_screeninfo *var,
>>                  ^~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:925:20: error: invalid storage class for function 'fbcon_startup'
>>      static const char *fbcon_startup(void)
>>                         ^~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:1036:13: error: invalid storage class for function 'fbcon_init'
>>      static void fbcon_init(struct vc_data *vc, int init)
>>                  ^~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:1183:13: error: invalid storage class for function 'fbcon_free_font'
>>      static void fbcon_free_font(struct display *p, bool freefont)
>>                  ^~~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:1191:13: error: invalid storage class for function 'set_vc_hi_font'
>>      static void set_vc_hi_font(struct vc_data *vc, bool set);
>>                  ^~~~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c:1193:13: error: invalid storage class for function 'fbcon_deinit'
>>      static void fbcon_deinit(struct vc_data *vc)
>>                  ^~~~~~~~~~~~
>>     drivers/video/fbdev/core/fbcon.c: In function 'fbcon_deinit':
>>>> drivers/video/fbdev/core/fbcon.c:1229:3: error: implicit declaration of function 'set_vc_hi_font'; did you mean 'seq_path_root'? [-Werror=implicit-function-declaration]
>>        set_vc_hi_font(vc, false);
>>        ^~~~~~~~~~~~~~
> Hmm ... this doesn't look like anything that is at fault with my patch.
>
> There's a lot of warnings here, and perhaps another fix is required to make
> sure that the configs are set correctly?  I can certainly take a look in
> another patch but AFAICT this isn't an issue with my patch.

Please accept my apologies for taking your time, we will look into it.

Best Regards,
Rong Chen
Prarit Bhargava Nov. 12, 2018, 1:52 p.m. UTC | #7
On 11/11/2018 10:18 PM, Rong Chen wrote:
> 
> 
> On 10/29/2018 11:15 PM, Prarit Bhargava wrote:
>>
>> On 10/29/2018 09:56 AM, kbuild test robot wrote:
>>> 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-211617
>>>
>>> base:   https://github.com/fuweitax/linux master
>>> config: m68k-multi_defconfig (attached as .config)
>>> compiler: m68k-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
>>> reproduce:
>>>          wget
>>> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
>>> ~/bin/make.cross
>>>          chmod +x ~/bin/make.cross
>>>          # save the attached .config to linux build tree
>>>          GCC_VERSION=7.2.0 make.cross ARCH=m68k
>>>
>>> All errors (new ones prefixed by >>):
>>>
>>>     drivers/video/fbdev/core/fbcon.c: In function 'fbcon_prepare_logo':
>>>     drivers/video/fbdev/core/fbcon.c:680:13: error: invalid storage class for
>>> function 'set_blitting_type'
>>>      static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
>>>                  ^~~~~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:680:1: warning: ISO C90 forbids mixed
>>> declarations and code [-Wdeclaration-after-statement]
>>>      static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
>>>      ^~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:690:12: error: invalid storage class for
>>> function 'fbcon_invalid_charcount'
>>>      static int fbcon_invalid_charcount(struct fb_info *info, unsigned
>>> charcount)
>>>                 ^~~~~~~~~~~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:698:12: error: invalid storage class for
>>> function 'con2fb_acquire_newinfo'
>>>      static int con2fb_acquire_newinfo(struct vc_data *vc, struct fb_info *info,
>>>                 ^~~~~~~~~~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:734:12: error: invalid storage class for
>>> function 'con2fb_release_oldinfo'
>>>      static int con2fb_release_oldinfo(struct vc_data *vc, struct fb_info
>>> *oldinfo,
>>>                 ^~~~~~~~~~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:780:13: error: invalid storage class for
>>> function 'con2fb_init_display'
>>>      static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
>>>                  ^~~~~~~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:825:12: error: invalid storage class for
>>> function 'set_con2fb_map'
>>>      static int set_con2fb_map(int unit, int newidx, int user)
>>>                 ^~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:882:12: error: invalid storage class for
>>> function 'var_to_display'
>>>      static int var_to_display(struct display *disp,
>>>                 ^~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:906:13: error: invalid storage class for
>>> function 'display_to_var'
>>>      static void display_to_var(struct fb_var_screeninfo *var,
>>>                  ^~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:925:20: error: invalid storage class for
>>> function 'fbcon_startup'
>>>      static const char *fbcon_startup(void)
>>>                         ^~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:1036:13: error: invalid storage class
>>> for function 'fbcon_init'
>>>      static void fbcon_init(struct vc_data *vc, int init)
>>>                  ^~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:1183:13: error: invalid storage class
>>> for function 'fbcon_free_font'
>>>      static void fbcon_free_font(struct display *p, bool freefont)
>>>                  ^~~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:1191:13: error: invalid storage class
>>> for function 'set_vc_hi_font'
>>>      static void set_vc_hi_font(struct vc_data *vc, bool set);
>>>                  ^~~~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c:1193:13: error: invalid storage class
>>> for function 'fbcon_deinit'
>>>      static void fbcon_deinit(struct vc_data *vc)
>>>                  ^~~~~~~~~~~~
>>>     drivers/video/fbdev/core/fbcon.c: In function 'fbcon_deinit':
>>>>> drivers/video/fbdev/core/fbcon.c:1229:3: error: implicit declaration of
>>>>> function 'set_vc_hi_font'; did you mean 'seq_path_root'?
>>>>> [-Werror=implicit-function-declaration]
>>>        set_vc_hi_font(vc, false);
>>>        ^~~~~~~~~~~~~~
>> Hmm ... this doesn't look like anything that is at fault with my patch.
>>
>> There's a lot of warnings here, and perhaps another fix is required to make
>> sure that the configs are set correctly?  I can certainly take a look in
>> another patch but AFAICT this isn't an issue with my patch.
> 
> Please accept my apologies for taking your time, we will look into it.
> 

Rong, it turns out that this was a bug in my patch.  I have posted a new
patch that resolves the above compile issue.

P.

> Best Regards,
> Rong Chen
diff mbox series

Patch

diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index 75ebbbf0a1fb..a2f2c7ea11ef 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)