From: "H. Peter Anvin" <hpa@zytor.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: hacklu <embedway.linux@gmail.com>, linux-kernel@vger.kernel.org
Subject: Re: why the decompressed procedure move kernel from address 0x100000(1M) to 0x1000000(16M) +x
Date: Sun, 03 Jun 2012 06:01:31 -0700 [thread overview]
Message-ID: <4FCB602B.70907@zytor.com> (raw)
In-Reply-To: <87obp0bxdv.fsf@xmission.com>
On 06/03/2012 01:41 AM, Eric W. Biederman wrote:
>
> Time wise copying the kernel probably takes a millisecond or less on
> modern hardware, so I don't think it is a particularly large concern.
>
If your boot time budget is a second, getting rid of a millisecond helps.
> Looking at parse_elf I see two misfeatures.
> - parse_elf is short some memsets for the ELF sections that are larger
> in memory than they are in the file data.
> - We don't return the entry point of the elf header and instead hard
> code the beginning of the file data.
>
> The oddest thing about parse_elf is what makes the copies parse_elf
> performs safe. It just happens to be the case that because of the
> way ld lays out the file those copies turn into a single memmove
> that just strips off the elf header and program header.
>
> So it should be trivial to and perhaps even safer to decompress the
> program segments to their final destination.
>
> Looking at the way the code is evolving, I suspect we should just give
> up overlapping compressed data and uncompressed data. The elf header
> logic in theory allows the code in a more arbitrary order, and it
> doesn't look like anyone has done a worst case space analysis for
> anything except gzip. The code works most of the time today but
> I do wonder if it is safe.
>
> Additionally at the rate we are adding compression algorithms I don't
> believe that all of the compression alorigthms use the gzip footer that
> reports the uncompressed length of the file. So I suspect it would be
> wise to get z_output_len from simply examining the uncompressed file
> that we feed to compression programs, aka vmlinux.bin.all-y
>
> Perhaps I am wrong but I have the strongest feeling we are playing with
> fire and getting very lucky right now.
I think it might be even worse; on x86-64 we produce 2 MiB of completely
useless zero-padding after the header. I have wanted to get rid of it
but I'm not sure if the ELF code is robust enough. The code is a
hackwork and yes, should be replaced by decompressing into the
designated target areas.
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
next prev parent reply other threads:[~2012-06-03 13:01 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-17 5:56 hacklu
2012-06-02 23:48 ` Eric W. Biederman
2012-06-03 3:10 ` H. Peter Anvin
2012-06-03 8:41 ` Eric W. Biederman
2012-06-03 13:01 ` H. Peter Anvin [this message]
2012-06-03 20:30 ` [PATCH 1/2] x86, boot: Don't overlap the compressed and non-compressed image Eric W. Biederman
2012-06-03 20:32 ` [PATCH 2/2] x86, boot: Optimize the elf header handling Eric W. Biederman
2012-07-01 14:56 ` [tip:x86/boot] " tip-bot for Eric W. Biederman
2012-07-01 15:04 ` [PATCH 2/2] " H. Peter Anvin
2012-07-01 15:34 ` H. Peter Anvin
2012-07-01 16:08 ` Eric W. Biederman
2012-07-01 16:11 ` H. Peter Anvin
2012-07-01 16:26 ` Eric W. Biederman
2012-07-01 16:44 ` H. Peter Anvin
2012-07-01 17:09 ` Eric W. Biederman
2012-07-01 17:15 ` H. Peter Anvin
2012-07-01 18:25 ` Eric W. Biederman
2012-07-01 18:37 ` H. Peter Anvin
2012-07-01 19:20 ` Eric W. Biederman
2012-07-01 19:23 ` H. Peter Anvin
2012-07-01 20:40 ` Eric W. Biederman
2012-07-01 20:52 ` H. Peter Anvin
2012-07-09 6:50 ` Eric W. Biederman
2012-07-09 6:52 ` [PATCH 1/4] x86 boot: Jump to the entry point address in the elf header Eric W. Biederman
2012-07-09 6:53 ` [PATCH 2/4] x86 boot: Optimize the elf header handling Eric W. Biederman
2012-07-09 6:55 ` [PATCH 3/4] x86 boot: When building vmlinux.bin properly precompute the memory image Eric W. Biederman
2012-07-09 6:56 ` [PATCH 4/4] x86 boot: Tell ld the kernel doesn't want 2MB file offset alignment Eric W. Biederman
2012-07-09 6:59 ` [PATCH 1/4] x86 boot: Jump to the entry point address in the elf header Eric W. Biederman
2012-07-02 16:56 ` [PATCH 2/2] x86, boot: Optimize the elf header handling Tejun Heo
2012-07-09 7:03 ` Eric W. Biederman
2012-07-01 2:23 ` [PATCH 1/2] x86, boot: Don't overlap the compressed and non-compressed image Eric W. Biederman
2012-07-01 2:32 ` H. Peter Anvin
2012-07-01 5:22 ` Eric W. Biederman
2012-07-01 14:55 ` [tip:x86/boot] x86, boot: Don' t " tip-bot for Eric W. Biederman
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=4FCB602B.70907@zytor.com \
--to=hpa@zytor.com \
--cc=ebiederm@xmission.com \
--cc=embedway.linux@gmail.com \
--cc=linux-kernel@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome