mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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.


  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