|
@@ -1316,6 +1316,18 @@ void console_start(struct console *console)
|
|
|
}
|
|
|
EXPORT_SYMBOL(console_start);
|
|
|
|
|
|
+static int __read_mostly keep_bootcon;
|
|
|
+
|
|
|
+static int __init keep_bootcon_setup(char *str)
|
|
|
+{
|
|
|
+ keep_bootcon = 1;
|
|
|
+ printk(KERN_INFO "debug: skip boot console de-registration.\n");
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+early_param("keep_bootcon", keep_bootcon_setup);
|
|
|
+
|
|
|
/*
|
|
|
* The console driver calls this routine during kernel initialization
|
|
|
* to register the console printing procedure with printk() and to
|
|
@@ -1463,7 +1475,9 @@ void register_console(struct console *newcon)
|
|
|
* users know there might be something in the kernel's log buffer that
|
|
|
* went to the bootconsole (that they do not see on the real console)
|
|
|
*/
|
|
|
- if (bcon && ((newcon->flags & (CON_CONSDEV | CON_BOOT)) == CON_CONSDEV)) {
|
|
|
+ if (bcon &&
|
|
|
+ ((newcon->flags & (CON_CONSDEV | CON_BOOT)) == CON_CONSDEV) &&
|
|
|
+ !keep_bootcon) {
|
|
|
/* we need to iterate through twice, to make sure we print
|
|
|
* everything out, before we unregister the console(s)
|
|
|
*/
|