]> err.no Git - linux-2.6/commitdiff
[PATCH] x86: add a bootparameter to reserve high linear address space
authorZachary Amsden <zach@vmware.com>
Tue, 26 Sep 2006 06:32:25 +0000 (23:32 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 26 Sep 2006 15:48:55 +0000 (08:48 -0700)
Add a boot parameter to reserve high linear address space for hypervisors.
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@vmware.com>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Documentation/kernel-parameters.txt
arch/i386/kernel/setup.c

index 71d05f481727669ce88a517a3cd631988fd9c32b..766abdab94e70b939233f2fdc62be70275a9f3de 100644 (file)
@@ -1363,6 +1363,11 @@ running once the system is up.
 
        reserve=        [KNL,BUGS] Force the kernel to ignore some iomem area
 
+       reservetop=     [IA-32]
+                       Format: nn[KMG]
+                       Reserves a hole at the top of the kernel virtual
+                       address space.
+
        resume=         [SWSUSP]
                        Specify the partition device for software suspend
 
index 060c68004bec876c4f249292b93ebcc21f1caaf0..16d99444cf66653c446e59534cc9f8e9f704643a 100644 (file)
@@ -934,6 +934,24 @@ static void __init parse_cmdline_early (char ** cmdline_p)
        }
 }
 
+/*
+ * reservetop=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.
+ */
+static int __init parse_reservetop(char *arg)
+{
+       unsigned long address;
+
+       if (!arg)
+               return -EINVAL;
+
+       address = memparse(arg, &arg);
+       reserve_top_address(address);
+       return 0;
+}
+early_param("reservetop", parse_reservetop);
+
 /*
  * Callback for efi_memory_walk.
  */