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"
Ingo Molnar wrote:
> * Jason Wessel <jason.wessel@windriver.com> wrote:
>
>
>> Ingo Molnar wrote:
>>
>>> * Ingo Molnar <mingo@elte.hu> wrote:
>>>
>>>
>>>
>>>
>>>> The commit point to which the attached config and bootlog belongs is:
>>>>
>>>> 2.6.31-07863-gb64ada6
>>>>
>>>> Reverting:
>>>>
>>>> c953094: early_printk: Allow more than one early console
>>>>
>>>> solves it.
>>>>
>>>>
>>> btw., the boot options are:
>>>
>>> Command line: root=/dev/sda6 earlyprintk=serial,ttyS0,115200 console=ttyS0,115200 debug
>>> initcall_debug apic=verbose sysrq_always_enabled ignore_loglevel
>>> selinux=0 nmi_watchdog=0 panic=1 3
>>>
>>>
>>>
>> AH HA!
>>
>> earlyprintk=serial,ttyS0,115200
>>
>> You are invoking the same device twice which is why you are having
>> infinite recursion. It was not obvious to me why the earlyprintk code
>> would allow "serial" or "ttyS", but perhaps we need to protect for
>> that?
>>
>> Your boot line should be:
>>
>> earlyprintk=serial,115200
>>
>> OR
>>
>> earlyprintk=ttyS0,115200
>>
>
> ah, indeed!
>
>
>> The line you had there before would have been the equivalent of doing:
>>
>> earlyprintk=ttyS0,ttyS0,115200
>>
>> Given this, do we still need to execute the revert your revert? Or
>> perhaps do we need to add some protection?
>>
>
> I have such lines on other boxes too. I'd suggest to add protection if
> it's not too ugly - the typoed line worked and was pretty natural to do,
> and the failure mode is nasty enough.
>
> Ingo
>

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.

Thanks,
Jason.


From 2b34fcd7c99f442507fee3b79d8d5f18e873ecaf Mon Sep 17 00:00:00 2001
From: Jason Wessel <jason.wessel@windriver.com>
Date: Wed, 23 Sep 2009 17:34:42 -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 | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)

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

static inline void early_console_register(struct console *con, int keep_early)
{
+ struct console *bcon;
+
early_console = con;
if (keep_early)
early_console->flags &= ~CON_BOOT;
else
early_console->flags |= CON_BOOT;
+ for (bcon = console_drivers; bcon != NULL; con = bcon->next)
+ if (strcmp(bcon->name, con->name) == 0) {
+ printk(KERN_CRIT "ERROR: earlyprintk= %s console"
+ " already defined\n", con->name);
+ return;
+ }
register_console(early_console);
}

--
1.6.3.1.9.g95405b
\
 
 \ /
  Last update: 2009-09-24 00:43    [W:0.241 / U:0.100 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site