[PATCH] Revert "early_printk: Allow more than one early console"

From: Ingo Molnar
Date: Wed Sep 23 2009 - 13:31:04 EST


This reverts commit c9530948bc626c8b638015c0b32abb9615659ec6.
---
arch/x86/kernel/early_printk.c | 65 +++++++++++++++++++--------------------
1 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
index 2acfd3f..519a5e1 100644
--- a/arch/x86/kernel/early_printk.c
+++ b/arch/x86/kernel/early_printk.c
@@ -176,19 +176,10 @@ asmlinkage void early_printk(const char *fmt, ...)
va_end(ap);
}

-static inline void early_console_register(struct console *con, int keep_early)
-{
- early_console = con;
- if (keep_early)
- early_console->flags &= ~CON_BOOT;
- else
- early_console->flags |= CON_BOOT;
- register_console(early_console);
-}

static int __init setup_early_printk(char *buf)
{
- int keep;
+ int keep_early;

if (!buf)
return 0;
@@ -197,34 +188,42 @@ static int __init setup_early_printk(char *buf)
return 0;
early_console_initialized = 1;

- keep = (strstr(buf, "keep") != NULL);
-
- while (*buf != '\0') {
- if (!strncmp(buf, "serial", 6)) {
- early_serial_init(buf + 6);
- early_console_register(&early_serial_console, keep);
- }
- if (!strncmp(buf, "ttyS", 4)) {
- early_serial_init(buf + 4);
- early_console_register(&early_serial_console, keep);
- }
- if (!strncmp(buf, "vga", 3) &&
- boot_params.screen_info.orig_video_isVGA == 1) {
- max_xpos = boot_params.screen_info.orig_video_cols;
- max_ypos = boot_params.screen_info.orig_video_lines;
- current_ypos = boot_params.screen_info.orig_y;
- early_console_register(&early_vga_console, keep);
- }
+ keep_early = (strstr(buf, "keep") != NULL);
+
+ if (!strncmp(buf, "serial", 6)) {
+ early_serial_init(buf + 6);
+ early_console = &early_serial_console;
+ } else if (!strncmp(buf, "ttyS", 4)) {
+ early_serial_init(buf);
+ early_console = &early_serial_console;
+ } else if (!strncmp(buf, "vga", 3)
+ && boot_params.screen_info.orig_video_isVGA == 1) {
+ max_xpos = boot_params.screen_info.orig_video_cols;
+ max_ypos = boot_params.screen_info.orig_video_lines;
+ current_ypos = boot_params.screen_info.orig_y;
+ early_console = &early_vga_console;
#ifdef CONFIG_EARLY_PRINTK_DBGP
- if (!strncmp(buf, "dbgp", 4) && !early_dbgp_init(buf + 4))
- early_console_register(&early_dbgp_console, keep);
+ } else if (!strncmp(buf, "dbgp", 4)) {
+ if (early_dbgp_init(buf+4) < 0)
+ return 0;
+ early_console = &early_dbgp_console;
+ /*
+ * usb subsys will reset ehci controller, so don't keep
+ * that early console
+ */
+ keep_early = 0;
#endif
#ifdef CONFIG_HVC_XEN
- if (!strncmp(buf, "xen", 3))
- early_console_register(&xenboot_console, keep);
+ } else if (!strncmp(buf, "xen", 3)) {
+ early_console = &xenboot_console;
#endif
- buf++;
}
+
+ if (keep_early)
+ early_console->flags &= ~CON_BOOT;
+ else
+ early_console->flags |= CON_BOOT;
+ register_console(early_console);
return 0;
}

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/