From: "Huang, Ying" <ying.huang@intel.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
akpm@linux-foundation.org, Yinghai Lu <yhlu.kernel@gmail.com>,
Chandramouli Narayanan <mouli@linux.intel.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH -mm -v5 0/3] i386/x86_64 boot: 32-bit boot protocol
Date: Thu, 18 Oct 2007 14:44:35 +0800 [thread overview]
Message-ID: <1192689875.21509.24.camel@caritas-dev.intel.com> (raw)
In-Reply-To: <p73k5pmxfdw.fsf@crumb.suse.de>
On Wed, 2007-10-17 at 11:24 +0200, Andi Kleen wrote:
> > Can you tell me what that early reservation interface is? What I find in
> > x86_64 that does early memory allocation is alloc_low_page, which gets
> > non-conflict memory area through e820 map.
>
> It's a new interface I only recently wrote:
>
> ftp://ftp.firstfloor.org/pub/ak/x86_64/quilt/patches/early-reserve
>
> Then you can use early_reserve() and the e820 allocator will not touch
> it.
>
> > Because setup data is allocated by bootloader or kernel 16-bit setup
> > code, and the e820 map is created there too, the memory area used by
> > setup data can be made reserved memory area in e820 map by bootloader or
> > kernel 16-bit setup code. This way, they will not be overwritten by
> > kernel. Do you think this works.
>
> It has a little of a chicken'n'egg problem because the e820 map will
> be actually in the area you want to reserve. But it might work too.
> Boot data is normally copied before other allocations in head64.c
> If you do variable size boot data that might not work though. And might
> be a little fragile overall.
Although variable size boot data (such as setup data) can be reserved
via early_reserve or e820 map, they may conflict with hard-coded memory
area used by kernel. This means boot loader must know the hard-coded
memory area used by kernel.
Another possible solution is as follow:
1. Bootloader allocates memory for setup data. Just avoid the memory
area after kernel loaded address.
2. In the very early stage of kernel boot (head64.c). Copy all the setup
data to the memory area after _end. And reserve that memory area with
early_reserve (or bad_addr for old code).
In this solution, the only unsafe memory area for setup data from
bootloader is memory area after _end. And kernel can use hard coded
memory area without the risk of conflicting with setup data from
bootloader.
Do you think this solution is better?
Best Regards,
Huang Ying
next prev parent reply other threads:[~2007-10-18 6:42 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-12 5:52 [PATCH -mm -v5 0/3] i386/x86_64 boot: 32-bit boot protocol Huang, Ying
2007-10-15 1:47 ` Huang, Ying
2007-10-17 1:59 ` Huang, Ying
2007-10-17 8:25 ` Andi Kleen
2007-10-17 9:05 ` Huang, Ying
2007-10-17 9:24 ` Andi Kleen
2007-10-18 6:44 ` Huang, Ying [this message]
2007-10-17 9:38 ` Eric W. Biederman
2007-10-18 6:57 ` Huang, Ying
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=1192689875.21509.24.camel@caritas-dev.intel.com \
--to=ying.huang@intel.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mouli@linux.intel.com \
--cc=yhlu.kernel@gmail.com \
/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