]> Pileus Git - ~andy/linux/commitdiff
lguest: remove RESERVE_MEM constant.
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 22 Apr 2013 04:40:37 +0000 (14:10 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 22 Apr 2013 06:01:35 +0000 (15:31 +0930)
We can use switcher_addr directly.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/lguest/page_tables.c

index a2454a24a10ce34b31a54edb4a8a2830812d8081..27cbb186a9112ba759462d8a12cff760a90d7470 100644 (file)
  */
 #ifdef CONFIG_X86_PAE
 #define SWITCHER_PMD_INDEX     (PTRS_PER_PMD - 1)
-#define RESERVE_MEM            2U
 #define CHECK_GPGD_MASK                _PAGE_PRESENT
 #else
-#define RESERVE_MEM            4U
 #define CHECK_GPGD_MASK                _PAGE_TABLE
 #endif
 
@@ -977,15 +975,21 @@ int init_guest_pagetable(struct lguest *lg)
 /*H:508 When the Guest calls LHCALL_LGUEST_INIT we do more setup. */
 void page_table_guest_data_init(struct lg_cpu *cpu)
 {
+       /*
+        * We tell the Guest that it can't use the virtual addresses
+        * used by the Switcher.  This trick is equivalent to 4GB -
+        * switcher_addr.
+        */
+       u32 top = ~switcher_addr + 1;
+
        /* We get the kernel address: above this is all kernel memory. */
        if (get_user(cpu->lg->kernel_address,
-               &cpu->lg->lguest_data->kernel_address)
+                    &cpu->lg->lguest_data->kernel_address)
                /*
-                * We tell the Guest that it can't use the top 2 or 4 MB
-                * of virtual addresses used by the Switcher.
+                * We tell the Guest that it can't use the top virtual
+                * addresses (used by the Switcher).
                 */
-               || put_user(RESERVE_MEM * 1024 * 1024,
-                           &cpu->lg->lguest_data->reserve_mem)) {
+           || put_user(top, &cpu->lg->lguest_data->reserve_mem)) {
                kill_guest(cpu, "bad guest page %p", cpu->lg->lguest_data);
                return;
        }