NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/48607: Boot with flag AB_SILENT and genfb set is not silent
>Number: 48607
>Category: kern
>Synopsis: Boot with flag AB_SILENT and genfb set is not silent
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Feb 21 08:15:00 +0000 2014
>Originator: Jörg Grundmann
>Release: 6.1.3
>Organization:
CenterTools GmbH
>Environment:
NetBSD joerg-netbsd.localdomain 6.1.3 NetBSD 6.1.3 (GENERIC) i386
>Description:
Boot process is not silent with vesa mode and flag AB_SILENT set.
When doing silent boot, most of the printed text which is normally shown on
console is going to the log even if AB_SILENT is set.
By switching to the vesa mode, the screen will be blank and it's normally a
good idea to print all messages again. This is done in vcons_replay_msgbuf() in
sys/dev/wscons/wsdisplay_vcons_util.c. But this does not check for boothowto
flags like AB_SILENT or AB_QUIET which makes the boot process not silent
anymore.
>How-To-Repeat:
- Drop to boot prompt in boot menu (press 5)
- Enter "vesa 1024x768x32"
- Enter "boot -z"
When booting you can see the very first messages until genfb is loaded.
>Fix:
The patch below fixes the problem for me on i386. But Maybe it's better to fix
this in vcons_replay_msgbuf() which is in
NetBSD/syssrc/sys/dev/wscons/wsdisplay_vcons_util.c because I saw that this
function is used by other framebuffer drivers, too.
I guess we have the same problem with the boothowto flag AB_QUIET.
--- a/NetBSD/syssrc/sys/dev/wsfb/genfb.c
+++ b/NetBSD/syssrc/sys/dev/wsfb/genfb.c
@@ -49,8 +49,9 @@ __KERNEL_RCSID(0, "$NetBSD: genfb.c,v 1.47.2.1 2013/02/13
20:52:06 riz Exp $");
#include <dev/wsfb/genfbvar.h>
-#ifdef GENFB_DISABLE_TEXT
#include <sys/reboot.h>
+
+#ifdef GENFB_DISABLE_TEXT
#define DISABLESPLASH (boothowto & (RB_SINGLE | RB_USERCONF | RB_ASKNAME | \
AB_VERBOSE | AB_DEBUG) )
#endif
@@ -312,12 +313,14 @@ genfb_attach(struct genfb_softc *sc, struct genfb_ops
*ops)
if (error) {
SCREEN_ENABLE_DRAWING(&sc->sc_console_screen);
genfb_init_palette(sc);
- vcons_replay_msgbuf(&sc->sc_console_screen);
+ if ( (boothowto & AB_SILENT) == 0)
+ vcons_replay_msgbuf(&sc->sc_console_screen);
}
}
#else
genfb_init_palette(sc);
- vcons_replay_msgbuf(&sc->sc_console_screen);
+ if ( (boothowto & AB_SILENT) == 0)
+ vcons_replay_msgbuf(&sc->sc_console_screen);
#endif
if (genfb_softc == NULL)
Home |
Main Index |
Thread Index |
Old Index