Files
linux/kernel
Robin Getz 4d09161196 printk: Enable the use of more than one CON_BOOT (early console)
Today, register_console() assumes the following usage:

  - The first console to register with a flag set to CON_BOOT
    is the one and only bootconsole.

  - If another register_console() is called with an additional
    CON_BOOT, it is silently rejected.

  - As soon as a console without the CON_BOOT set calls
    registers the bootconsole is automatically unregistered.

  - Once there is a "real" console - register_console() will
    silently reject any consoles with it's CON_BOOT flag set.

In many systems (alpha, blackfin, microblaze, mips, powerpc,
sh, & x86), there are early_printk implementations, which use
the CON_BOOT which come out serial ports, vga, usb, & memory
buffers.

In many embedded systems, it would be nice to have two
bootconsoles - in case the primary fails, you always have
access to a backup memory buffer - but this requires at least
two CON_BOOT consoles...

This patch enables that functionality.

With the change applied, on boot you get (if you try to
re-enable a boot console after the "real" console has been
registered):

  root:/> dmesg | grep console
  bootconsole [early_shadow0] enabled
  bootconsole [early_BFuart0] enabled
  Kernel command line: root=/dev/mtdblock0 rw earlyprintk=serial,uart0,57600 console=ttyBF0,57600 nmi_debug=regs
  console handover:boot [early_BFuart0] boot [early_shadow0]  -> real [ttyBF0]
  Too late to register bootconsole early_shadow0

or:

  root:/> dmesg | grep console
  Kernel command line: root=/dev/mtdblock0 rw console=ttyBF0,57600
  console [ttyBF0] enabled

Signed-off-by: Robin Getz <rgetz@blackfin.uclinux.org>
Cc: "Linus Torvalds" <torvalds@linux-foundation.org>
Cc: "Andrew Morton" <akpm@linux-foundation.org>
Cc: "Mike Frysinger" <vapier.adi@gmail.com>
Cc: "Paul Mundt" <lethal@linux-sh.org>
LKML-Reference: <200907012108.38030.rgetz@blackfin.uclinux.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-07-03 10:10:43 +02:00
..
2009-06-26 09:25:42 +02:00
2009-06-24 00:02:38 -04:00
2009-06-24 00:02:38 -04:00
2009-06-16 19:47:48 -07:00
2009-05-15 07:56:24 -05:00
2009-06-18 13:03:54 -07:00
2009-06-18 13:03:57 -07:00
2009-01-14 18:09:02 +01:00
2009-06-18 13:03:56 -07:00
2009-06-18 13:03:55 -07:00
2009-06-29 17:14:14 +01:00
2009-03-30 22:05:16 +10:30
2009-06-16 19:47:48 -07:00
2009-06-15 21:30:23 -07:00
2009-06-18 13:03:55 -07:00
2009-04-14 17:17:16 +02:00