Index: sys/conf/files =================================================================== RCS file: /cvsroot/src/sys/conf/files,v retrieving revision 1.924 diff -u -r1.924 files --- sys/conf/files 15 Oct 2008 06:51:20 -0000 1.924 +++ sys/conf/files 2 Nov 2008 13:25:04 -0000 @@ -254,6 +254,9 @@ defflag opt_tftproot.h TFTPROOT TFTPROOT_DEBUG +# boot verbosity options +defparam opt_verbosity.h BOOT_VERBOSITY + # Support for hardware performance monitoring counters # defflag opt_perfctrs.h PERFCTRS Index: sys/kern/init_main.c =================================================================== RCS file: /cvsroot/src/sys/kern/init_main.c,v retrieving revision 1.371 diff -u -r1.371 init_main.c --- sys/kern/init_main.c 28 Oct 2008 15:33:10 -0000 1.371 +++ sys/kern/init_main.c 2 Nov 2008 13:25:05 -0000 @@ -331,6 +331,8 @@ l->l_cpu = curcpu(); #endif + BOOTHOWTO_SET_VERBOSITY(boothowto); + /* * Attempt to find console and initialize * in case of early panic or other messages. Index: sys/sys/boot_flag.h =================================================================== RCS file: /cvsroot/src/sys/sys/boot_flag.h,v retrieving revision 1.7 diff -u -r1.7 boot_flag.h --- sys/sys/boot_flag.h 29 Apr 2008 19:16:08 -0000 1.7 +++ sys/sys/boot_flag.h 2 Nov 2008 13:25:05 -0000 @@ -67,6 +67,9 @@ case 'm': /* mini root present in memory */ \ (retval) |= RB_MINIROOT; \ break; \ + case 'n': /* force boot normally */ \ + (retval) |= AB_FORCENORMAL; \ + break; \ case 'q': /* boot quietly */ \ (retval) |= AB_QUIET; \ break; \ Index: sys/sys/reboot.h =================================================================== RCS file: /cvsroot/src/sys/sys/reboot.h,v retrieving revision 1.25 diff -u -r1.25 reboot.h --- sys/sys/reboot.h 25 Dec 2007 18:33:48 -0000 1.25 +++ sys/sys/reboot.h 2 Nov 2008 13:25:05 -0000 @@ -63,6 +63,9 @@ #define AB_VERBOSE 0x00020000 /* boot verbosely */ #define AB_SILENT 0x00040000 /* boot silently */ #define AB_DEBUG 0x00080000 /* boot with debug messages */ +#define AB_FORCENORMAL 0x00100000 /* force normal boot */ + +#define AB_VERBOSE_ALL (AB_QUIET|AB_VERBOSE|AB_SILENT|AB_DEBUG) /* * The top 4 bits are architecture specific and are used to Index: sys/sys/systm.h =================================================================== RCS file: /cvsroot/src/sys/sys/systm.h,v retrieving revision 1.228 diff -u -r1.228 systm.h --- sys/sys/systm.h 23 Sep 2008 22:20:24 -0000 1.228 +++ sys/sys/systm.h 2 Nov 2008 13:25:06 -0000 @@ -42,6 +42,7 @@ #if defined(_KERNEL_OPT) #include "opt_ddb.h" #include "opt_multiprocessor.h" +#include "opt_verbosity.h" #endif #include @@ -134,6 +135,32 @@ #define bootverbose (boothowto & AB_VERBOSE) #define bootquiet (boothowto & AB_QUIET) +/* + * BOOTHOWTO_SET_VERBOSITY() processes boothowto to allow the boot verbosity + * to be hardwired in a kernel configuration with the BOOT_VERBOSITY + * option, yet potentially it to be overridden with the -n boot flag (which + * corresponds to AB_FORCENORMAL). If AB_FORCENORMAL is set in the kernel + * configuration, then the bootloader will not be able to override the + * hardwired settings. + */ + +#ifdef BOOT_VERBOSITY +#define BOOTHOWTO_SET_VERBOSITY(h) do { \ + if ((BOOT_VERBOSITY) & AB_FORCENORMAL) { \ + (h) &= ~AB_VERBOSE_ALL; \ + (h) |= (BOOT_VERBOSITY); \ + } else if ((h) & AB_FORCENORMAL) { \ + (h) &= ~AB_VERBOSE_ALL; \ + } else \ + (h) |= (BOOT_VERBOSITY); \ + } while (/* CONSTCOND */ 0) +#else +#define BOOTHOWTO_SET_VERBOSITY(h) do { \ + if ((h) & AB_FORCENORMAL) \ + (h) &= ~AB_VERBOSE_ALL; \ + } while (/* CONSTCOND */ 0) +#endif /* BOOT_VERBOSITY */ + extern void (*v_putc)(int); /* Virtual console putc routine */ /*