This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] Re: [patch 7/8] Add a bootparameter to reserve high linear a

Andrew Morton wrote:
The comment says "must".  If that's true then printing a what-you-did-wrong
message and halting is appropriate.

But whatever.  The issue is flagged and I'm happy to leave it in Jeremy's

Considering I wrote that patch, I think I should fix it -- here you go
Subject: Add a bootparameter to reserve high linear address space.

Add a bootparameter 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

Signed-off-by: Zachary Amsden <zach@xxxxxxxxxx>
Signed-off-by: Chris Wright <chrisw@xxxxxxxxxxxx>

 Documentation/kernel-parameters.txt |    5 +++++
 arch/i386/kernel/setup.c            |   19 +++++++++++++++++++
 2 files changed, 24 insertions(+)

diff -r 5bb2fc59943d Documentation/kernel-parameters.txt
--- a/Documentation/kernel-parameters.txt       Thu Aug 03 01:36:13 2006 -0700
+++ b/Documentation/kernel-parameters.txt       Thu Aug 03 01:36:13 2006 -0700
@@ -1357,6 +1357,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
diff -r 5bb2fc59943d arch/i386/kernel/setup.c
--- a/arch/i386/kernel/setup.c  Thu Aug 03 01:36:13 2006 -0700
+++ b/arch/i386/kernel/setup.c  Thu Aug 03 01:36:52 2006 -0700
@@ -160,6 +160,12 @@ static char command_line[COMMAND_LINE_SI
 static char command_line[COMMAND_LINE_SIZE];
 unsigned char __initdata boot_params[PARAM_SIZE];
+static int __init setup_reservetop(char *s)
+       return 1;
+__setup("reservetop", setup_reservetop);
 static struct resource data_resource = {
        .name   = "Kernel data",
@@ -917,6 +923,17 @@ static void __init parse_cmdline_early (
                else if (!memcmp(from, "vmalloc=", 8))
                        __VMALLOC_RESERVE = memparse(from+8, &from);
+               /*
+                * 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.
+                */
+               else if (!memcmp(from, "reservetop=", 11)) {
+                       unsigned long reserve = memparse(from+11, &from);
+                       reserve_top_address(reserve);
+               }
                c = *(from++);
                if (!c)
Xen-devel mailing list
<Prev in Thread] Current Thread [Next in Thread>