RFC: x86: relocatable kernel changes (revised spec)
H. Peter Anvin
hpa at zytor.com
Mon May 11 12:03:02 EDT 2009
Eric W. Biederman wrote:
>
>> +Field name: init_size
>> +Type: read
>> +Offset/size: 0x25c/4
>> +
>> + This field indicates the amount of linear contiguous memory starting
>> + at the kernel load address (rounded up to kernel_alignment) that the
>> + kernel needs before it is capable of examining its memory map. This
>> + is not the same thing as the total amount of memory the kernel needs
>> + to boot, but it can be used by a relocating boot loader to help
>> + select a safe load address for the kernel.
>
> This wording is a bit unclear.
>
> Can we finally say that it is safe to put the initrd immediately after
> the kernel?
>
I *believe* we can, as the brk limit checking should catch overruns.
The only question is whether or not there will me memory allocated off
the memory map before the initrd is reserved; I *think* the answer is no
but I haven't done the audit.
> The rounding up part of that comment is unclear.
The rounding up was to reflect the automatic moving upwards from the
load address to the next kernel_alignment datum.
> Peter did your implementation of init_size take into account the maximum expansion
> during decompression? At a quick glance at your previous patches I couldn't
> tell. I know were in that direction with zoffset.h and voffset.h but I don't
> recognize the formula for where I put the pic decompressor in your calculation
> of this.
It does take it into account. The pic decompressor is located at
(ZO_)z_extract_offset; the actual formula moved into mkpiggy.c.
I have regenerated the tip:x86/kbuild-phys branch to be only cleanups
(with the intent of putting the policy changes cleanly on top), and much
better structured. I hadn't originally expected this to turn into so
much of a cleanup effort.
http://git.kernel.org/?p=linux/kernel/git/x86/linux-2.6-tip.git;a=shortlog;h=x86/kbuild-phys
This checkin, in particular, should answer that question, I believe:
http://git.kernel.org/?p=linux/kernel/git/x86/linux-2.6-tip.git;a=commitdiff;h=02a884c0fe7ec8459d00d34b7d4101af21fc4a86
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
More information about the kexec
mailing list