Re: Early printk behaviour

From: Robin Getz
Date: Fri Aug 17 2007 - 17:00:41 EST


On Fri 17 Aug 2007 03:49, Gerd Hoffmann pondered:
> Mike Frysinger wrote:
> >> Hmm, sort of, although I didn't think about the case of no real console
> >> replacing the early console. The intention of the patch is to have a
> >> smooth handover from the boot console to the real console. And, yes, if
> >> no real console is ever registered the boot console keeps running ...
> >
> > i think it also occurs in the case where real console != early console
>
> No. At least not of the boot console has the CON_BOOT flag set as it
> should. Last message you'll see on the boot console is the handover
> printk, telling you which real console device prints the following
> messages. Whenever early and real console go to the physical device or
> not doesn't matter.
>
> >> So you can either let it running and *not* mark it __init, so it can
> >> keep on going without breaking. Or you can explicitly unregister your
> >> boot console at some point, maybe using a late_initcall.
> >
> > wouldnt a common kernel late_initcall() be more appropriate ? if
> > early console hasnt switched over (for whatever reason), then kill it
>
> Hmm, yes, should be doable in generic code. Check whenever the current
> console has CON_BOOT set and if so unregister it.

Something like:

Index: kernel/printk.c
===================================================================
--- kernel/printk.c (revision 3568)
+++ kernel/printk.c (working copy)
@@ -1104,6 +1104,22 @@
}
EXPORT_SYMBOL(unregister_console);

+int __init disable_boot_consoles(void)
+{
+ struct console *con;
+
+ for (con = console_drivers; con; con = con->next) {
+ if (con->flags & CON_BOOT) {
+ printk(KERN_INFO "Unregister BootConsole %s%d\n",
+ con->name, con->index);
+ unregister_console(con);
+ }
+ }
+ return 0;
+}
+late_initcall(disable_boot_consoles);
+
+
/**
* tty_write_message - write a message to a certain tty, not just the console.
* @tty: the destination tty_struct
-
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/