aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZachary Amsden <zach@vmware.com>2006-09-26 02:32:25 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-26 11:48:55 -0400
commit461a9afff5e731d6337c0f5b08a1e727ccd57e0a (patch)
tree2bd69049bb1c3e8eac7ccd753bf8f253a9ac19b6
parent052e79941a042e5be4feffa03b1fd60d93fb9e9a (diff)
[PATCH] x86: add a bootparameter to reserve high linear address space
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>
-rw-r--r--Documentation/kernel-parameters.txt5
-rw-r--r--arch/i386/kernel/setup.c18
2 files changed, 23 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 71d05f481727..766abdab94e7 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1363,6 +1363,11 @@ running once the system is up.
1363 1363
1364 reserve= [KNL,BUGS] Force the kernel to ignore some iomem area 1364 reserve= [KNL,BUGS] Force the kernel to ignore some iomem area
1365 1365
1366 reservetop= [IA-32]
1367 Format: nn[KMG]
1368 Reserves a hole at the top of the kernel virtual
1369 address space.
1370
1366 resume= [SWSUSP] 1371 resume= [SWSUSP]
1367 Specify the partition device for software suspend 1372 Specify the partition device for software suspend
1368 1373
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index 060c68004bec..16d99444cf66 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -935,6 +935,24 @@ static void __init parse_cmdline_early (char ** cmdline_p)
935} 935}
936 936
937/* 937/*
938 * reservetop=size reserves a hole at the top of the kernel address space which
939 * a hypervisor can load into later. Needed for dynamically loaded hypervisors,
940 * so relocating the fixmap can be done before paging initialization.
941 */
942static int __init parse_reservetop(char *arg)
943{
944 unsigned long address;
945
946 if (!arg)
947 return -EINVAL;
948
949 address = memparse(arg, &arg);
950 reserve_top_address(address);
951 return 0;
952}
953early_param("reservetop", parse_reservetop);
954
955/*
938 * Callback for efi_memory_walk. 956 * Callback for efi_memory_walk.
939 */ 957 */
940static int __init 958static int __init