lkml.org 
[lkml]   [2009]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [origin tree boot hang] [PATCH] Revert "early_printk:Allowmorethan one early console"
    Linus Torvalds wrote:
    > On Wed, 23 Sep 2009, Jason Wessel wrote:
    >
    >> Perhaps you will consider adding this patch to your tree? It fixes the
    >> specific case you mentioned. It will still allow the board to boot and
    >> instead of crashing, print a warning on the second instance.
    >>
    >
    > Ugh. This looks totally bogus.
    >
    > Why don't you just add CON_REGISTERED to the console flags, and do
    >
    > /* Already registered? */
    > if (early_console->flags & CON_REGISTERED)
    > return;
    > early_console->flags |= CON_REGISTERED;
    >
    > there instead? That whole "loop over existing consoles to check their
    > names" looks silly and broken, and you're already playing with the flags
    > in there (CON_BOOT).
    >

    Seems reasonable to me. We don't even have to add a new flag, because
    we already have the index set to != -1 when the console registration
    succeeds.

    Here is the revised patch.

    Jason.


    From 66081d4a28cb17f58b09fe05a5a9c8441fc701ac Mon Sep 17 00:00:00 2001
    From: Jason Wessel <jason.wessel@windriver.com>
    Date: Wed, 23 Sep 2009 18:11:31 -0500
    Subject: [PATCH 1/1] early_printk: Protect against using the same device twice

    If you use the kernel argument:

    earlyprintk=serial,ttyS0,115200

    This will cause a recursive crash. Instead warn the end user that they
    specified the device a second time.

    Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
    ---
    arch/x86/kernel/early_printk.c | 5 +++++
    1 files changed, 5 insertions(+), 0 deletions(-)

    diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
    index 2acfd3f..41fd965 100644
    --- a/arch/x86/kernel/early_printk.c
    +++ b/arch/x86/kernel/early_printk.c
    @@ -178,6 +178,11 @@ asmlinkage void early_printk(const char *fmt, ...)

    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;
    --
    1.6.3.1.9.g95405b
    \
     
     \ /
      Last update: 2009-09-24 01:17    [W:0.023 / U:30.204 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site