diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 58a9b8a8b722000dcc72366a6f5c00d957591848..ba3fa075e57d9bf0956733ca168ad27f38842668 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -1759,6 +1759,17 @@ static int fbcon_switch(struct vc_data *vc) if (vt_cons[vc->vc_num]->vc_mode == KD_TEXT) accel_clear_margins(vc, info, 0); if (logo_shown == -2) { + struct fb_fillrect rect; + int bgshift = (vc->vc_hi_font_mask) ? 13 : 12; + + logo_shown = fg_console; + rect.color = attr_bgcol_ec(bgshift, vc); + rect.rop = ROP_COPY; + rect.dx = rect.dy = 0; + rect.width = info->var.xres; + rect.height = logo_lines * vc->vc_font.height; + info->fbops->fb_fillrect(info, &rect); + logo_shown = fg_console; /* This is protected above by initmem_freed */ fb_show_logo(info); diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 68bf87cd240c957d3ae786f25e061b0590f0a0e8..447005f6dae18d04a7c032e2bd31007bd4aafb61 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -721,7 +721,6 @@ int fb_show_logo(struct fb_info *info) u32 *palette = NULL, *saved_pseudo_palette = NULL; unsigned char *logo_new = NULL; struct fb_image image; - struct fb_fillrect rect; int x; /* Return if the frame buffer is not mapped or suspended */ @@ -767,12 +766,6 @@ int fb_show_logo(struct fb_info *info) image.height = fb_logo.logo->height; image.dy = 0; - rect.dx = 0; - rect.dy = 0; - rect.color = 0; - rect.width = info->var.xres; - rect.height = fb_logo.logo->height; - info->fbops->fb_fillrect(info, &rect); for (x = 0; x < num_online_cpus() * (fb_logo.logo->width + 8) && x <= info->var.xres-fb_logo.logo->width; x += (fb_logo.logo->width + 8)) { image.dx = x;