From: "H. Peter Anvin" <hpa@zytor.com>
To: guenter.roeck@ericsson.com
Cc: linux-kernel@vger.kernel.org, penberg@cs.helsinki.fi,
mingo@redhat.com, x86@kernel.org
Subject: Re: [PATCH][RESEND] x86: Do not write to VGA memory space if CONFIG_VGA_CONSOLE is undefined
Date: Tue, 06 Apr 2010 13:17:27 -0700 [thread overview]
Message-ID: <4BBB96D7.1040302@zytor.com> (raw)
In-Reply-To: <1270505579.1477.584.camel@groeck-laptop>
On 04/05/2010 03:12 PM, Guenter Roeck wrote:
>>
>> I'm unhappy about it, because *those early messages shouldn't exist in
>> the first place*. It seems to be an indication that we're invoking
>> setup_early_printk() too late. The whole playing around with max_xpos
>> and max_ypos instead of using boot_params.screen_info directly is
>> particularly bleacherous.
>>
>> I would at least like to see if the improper invocation of
>> early_printk() can be avoided.
>>
> There are several such invocations.
>
> 1) arch/x86/kernel/head_64.S:
> ENTRY(early_idt_handler)
> ...
> leaq early_idt_msg(%rip),%rdi
> call early_printk
>
> This displays "PANIC: early exception %02lx rip %lx:%lx error %lx cr2 %
> lx\n" and subsequently calls dump_stack. The handler is initialized from
> x86_64_start_kernel().
>
> 2) arch/x86/kernel/head64.c:x86_64_start_kernel():
> if (console_loglevel == 10)
> early_printk("Kernel alive\n");
>
> 3) init/main.c: start_kernel()
> printk(KERN_NOTICE "%s", linux_banner);
> and
> printk(KERN_NOTICE "Kernel command line: %s\n", boot_command_line);
>
> 4) arch/x86/kernel/setup.c:setup_arch()
> Several.
>
> After that I gave up looking.
>
> Not sure if or how those can be avoided.
>
> Moving setup_early_printk() into x86_64_start_kernel() might be an
> option, but that would require much more significant changes.
>
Okay... that leaves a few very ugly options.
I think spewing onto a potentially uninitialized (or not even present)
serial port is worse than losing the messages. It seems to be pretty
much a no-brainer to have:
if (boot_params.screen_info.orig_video_isVGA != 1)
return;
... in early_vga_write(), and is something we should do regardless.
Calling early_serial_write() before early_serial_init() is distinctly
not safe... depending on boot conditions you might end up with a glacial
boot.
Therefore, the only sensible way to get the early messages out is really
to push setup_early_printk() as early as possible.
-hpa
next prev parent reply other threads:[~2010-04-06 20:18 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-31 14:41 [PATCH][RESEND] x86: Do not write to VGA memory space if CONFIG_VGA_CONSOLE is undefined Guenter Roeck
2010-03-31 15:32 ` Pekka Enberg
2010-04-05 18:10 ` Guenter Roeck
2010-04-05 18:46 ` H. Peter Anvin
2010-04-05 20:02 ` Guenter Roeck
2010-04-05 20:25 ` H. Peter Anvin
2010-04-05 21:04 ` Guenter Roeck
2010-04-05 21:11 ` H. Peter Anvin
2010-04-05 21:15 ` H. Peter Anvin
2010-04-05 22:12 ` Guenter Roeck
2010-04-06 20:17 ` H. Peter Anvin [this message]
2010-04-06 20:37 ` Guenter Roeck
2010-04-19 21:02 ` H. Peter Anvin
2010-04-20 2:21 ` Guenter Roeck
2010-04-20 3:55 ` H. Peter Anvin
2010-03-31 18:31 ` H. Peter Anvin
2010-03-31 19:08 ` Guenter Roeck
2010-03-31 20:05 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BBB96D7.1040302@zytor.com \
--to=hpa@zytor.com \
--cc=guenter.roeck@ericsson.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=penberg@cs.helsinki.fi \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.