Re: Is the x86-64 kernel size limit real?

From: H. Peter Anvin
Date: Thu Jun 22 2006 - 18:44:34 EST


Olivier Galibert wrote:
On Thu, Jun 22, 2006 at 02:38:02PM -0700, H. Peter Anvin wrote:
It turns out x86-64, unlike i386, does still have a hardcoded limit,
but the limit in build.c is wrong:

kernel/head.S:
/* 40MB kernel mapping. The kernel code cannot be bigger than that.
When you change this change KERNEL_TEXT_SIZE in page.h too. */
/* (2^48-(2*1024*1024*1024)-((2^39)*511)-((2^30)*510)) = 0 */

So this should be replaced by KERNEL_TEXT_SIZE in page.h, or better,
this should be done dynamically in x86-64 too.

Interesting. KERNEL_TEXT_SIZE wouldn't work though, since that's the
decompressed size while the 4Mb limit is on the compressed size. As a
datapoint, though, the uncompressed image is 15.7Mb, for a 4.5Mb
compressed image.


Oh, right. In fact, the 4 MB "limit" for i386 was actually an 8 MB uncompressed limit, with a 2:1 ratio assumed... not very accurate.

The limit should be removed from the boot tools; since we're talking uncompressed limits those should be tested in the linker script if anywhere.

-hpa

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/