CONFIG_PHYSICAL_ALIGN limited to 4M?

From: Rene Herman
Date: Tue Jan 02 2007 - 06:07:18 EST


Good day.

A while ago it was remarked on list here that keeping the kernel 4M aligned physically might be a performance win if the added 1M (it normally loads at 1M) meant it would fit on one 4M aligned hugepage instead of 2 and since that time I've been doing such.

In fact, while I was at it, I ran the kernel at 16M; while admittedly a bit of a non-issue, having never experienced ZONE_DMA shortage, I am an ISA user on a >16M machine so this seemed to make sense -- no kernel eating up "precious" ISA-DMAable memory.

Recently CONFIG_PHYSICAL_START was replaced by CONFIG_PHYSICAL_ALIGN (commit e69f202d0a1419219198566e1c22218a5c71a9a6) and while 4M alignment is still possible, that's also the strictest alignment allowed meaning I can't load my (non-relocatable) kernel at 16M anymore.

If I just apply the following and set it to 16M, things seem to be working for me. Was there an important reason to limit the alignment to 4M, and if so, even on non relocatable kernels?

Rene.

diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 0d67a0a..aeadec2 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -793,7 +793,7 @@ config RELOCATABLE
config PHYSICAL_ALIGN
hex "Alignment value to which kernel should be aligned"
default "0x100000"
- range 0x2000 0x400000
+ range 0x2000 0x1000000
help
This value puts the alignment restrictions on physical address
where kernel is loaded and run from. Kernel is compiled for an