Kexec & Memory Zones question
WANG Cong
xiyou.wangcong at gmail.com
Thu May 12 06:03:03 EDT 2011
On Wed, 11 May 2011 11:09:08 -0400, Vivek Goyal wrote:
> We have discussed this in the past and due to various reasons the max
> amount of RAM you can boot your kernel from seems to be 896MB for x86_64
> and 512MB for 32bit. I shall have to open a previous thread with hpa to
> get exact numbers. So loading kernel even higher is not the solution.
>
On the kexec-tools side, I think the limit is hard-coded,
./include/x86/x86-linux.h:250:#define DEFAULT_INITRD_ADDR_MAX 0x37FFFFFF
but we have,
initrd_addr_max = DEFAULT_INITRD_ADDR_MAX;
if (real_mode->protocol_version >= 0x0203) {
initrd_addr_max = real_mode->initrd_addr_max;
dbgprintf("initrd_addr_max is 0x%lx\n", initrd_addr_max);
}
so, from the code, initrd_addr_max can be provided by the bootloader.
I remember on the kernel side there's also such a limit, but I can't
find where it is. I am wondering what prevents us from increasing this
limit to 4G on i386 and even higher on x86_64.
Thanks.
More information about the kexec
mailing list