1 file changed, 13 insertions(+) arch/i386/kernel/setup.c | 13 +++++++++++++ This is necessary to allow dynamically loaded hypervisor modules, which might not happen until userspace is already running, and also provides a useful tool to benchmark the performance impact of reduced lowmem address space. Signed-off-by: Zachary Amsden <zach at vmware.com> =================================================================== diff -r b6c100bb5ca5 -r 0adfc39039c7 arch/i386/kernel/setup.c --- a/arch/i386/kernel/setup.c Tue Aug 01 01:32:00 2006 -0700 +++ b/arch/i386/kernel/setup.c Tue Aug 01 01:32:00 2006 -0700 @@ -917,6 +917,19 @@ static void __init parse_cmdline_early ( else if (!memcmp(from, "vmalloc=", 8)) __VMALLOC_RESERVE = memparse(from+8, &from); + /* + * reservedtop=size reserves a hole at the top of the kernel + * address space which a hypervisor can load into later. + * Needed for dynamically loaded hypervisors, so relocating + * the fixmap can be done before paging initialization. + * This hole must be a multiple of 4M. + */ + else if (!memcmp(from, "reservedtop=", 12)) { + unsigned long reserved = memparse(from+12, &from); + reserved &= ~0x3fffff; + set_fixaddr_top(-reserved); + } + next_char: c = *(from++); if (!c)