2007-02-20 11:35:52

by Gerd Hoffmann

[permalink] [raw]
Subject: [patch] Fixes and cleanups for earlyprintk aka boot console.

Hi,

The console subsystem already has an idea of a boot console, using the
CON_BOOT flag. The implementation has some flaws though. The major
problem is that presence of a boot console makes register_console()
ignore any other console devices (unless explicitly specified on the
kernel command line).

This patch fixes the console selection code to *not* consider a boot
console a full-featured one, so the first non-boot console registering
will become the default console instead. This way the unregister call
for the boot console in the register_console() function actually
triggers and the handover from the boot console to the real console
device works smoothly. Added a printk for the handover, so you know
which console device the output goes to when the boot console stops
printing messages.

The disable_early_printk() call is obsolete with that patch, explicitly
disabling the early console isn't needed any more as it works
automagically with that patch.

I've walked through the tree, dropped all disable_early_printk()
instances found below arch/ and tagged the consoles with CON_BOOT if
needed.

The code is tested on x86 only so far. It is probably a good idea to
run it in -mm for a while to shake out any architecture issues which
might show up. Comments?

cheers,

Gerd

--
Gerd Hoffmann <[email protected]>


Attachments:
early-printk-boot-console.patch (10.35 kB)