If you use the kernel argument:
  earlyprintk=serial,ttyS0,115200
This will cause a recursive hang printing the same line
again and again:
 BIOS-e820: 
000000003fff3000 - 
0000000040000000 (ACPI data)
 BIOS-e820: 
00000000e0000000 - 
00000000f0000000 (reserved)
 BIOS-e820: 
00000000fec00000 - 
0000000100000000 (reserved)
bootconsole [earlyser0] enabled
Linux version 
2.6.31-07863-gb64ada6 (mingo@sirius) (gcc version 4.3.2 
20081105 (Red Hat 4.3.2-7) (GCC) ) #16789 SMP Wed Sep 23 21:09:43 CEST 2009
Linux version 
2.6.31-07863-gb64ada6 (mingo@sirius) (gcc version 4.3.2 
20081105 (Red Hat 4.3.2-7) (GCC) ) #16789 SMP Wed Sep 23 21:09:43 CEST 2009
Linux version 
2.6.31-07863-gb64ada6 (mingo@sirius) (gcc version 4.3.2 
20081105 (Red Hat 4.3.2-7) (GCC) ) #16789 SMP Wed Sep 23 21:09:43 CEST 2009
Linux version 
2.6.31-07863-gb64ada6 (mingo@sirius) (gcc version 4.3.2 
20081105 (Red Hat 4.3.2-7) (GCC) ) #16789 SMP Wed Sep 23 21:09:43 CEST 2009
Linux version 
2.6.31-07863-gb64ada6 (mingo@sirius) (gcc version 4.3.2 
20081105 (Red Hat 4.3.2-7) (GCC) ) #16789 SMP Wed Sep 23 21:09:43 CEST 2009
Instead warn the end user that they specified the device
a second time, and ignore that second console.
Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Cc: Len Brown <lenb@kernel.org>
Cc: Greg KH <gregkh@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
LKML-Reference: <
4ABAAB89.
1080407@windriver.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
 
 static inline void early_console_register(struct console *con, int keep_early)
 {
+       if (early_console->index != -1) {
+               printk(KERN_CRIT "ERROR: earlyprintk= %s already used\n",
+                      con->name);
+               return;
+       }
        early_console = con;
        if (keep_early)
                early_console->flags &= ~CON_BOOT;