]> xenbits.xensource.com Git - mini-os.git/commitdiff
mini-os: add static page tables for virtual kernel area for HVMlite
authorJuergen Gross <jgross@suse.com>
Thu, 18 Aug 2016 11:00:27 +0000 (13:00 +0200)
committerWei Liu <wei.liu2@citrix.com>
Wed, 24 Aug 2016 10:37:05 +0000 (11:37 +0100)
In HVMlite mode we need the virtual kernel area for mapping of the
console and xenbus ring pages as especially on 32 bit architecture
their pfns might be above the supported maximum memory size.

Add the page tables needed for doing the mapping.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
arch/x86/mm.c
arch/x86/x86_64.S

index 0543017b6199fc9d1941f8d3383697b2dcfcef37..cbb5617186e44885ff39505d3eecfe177cc100d4 100644 (file)
@@ -733,6 +733,17 @@ void arch_init_mm(unsigned long* start_pfn_p, unsigned long* max_pfn_p)
 
     *start_pfn_p = start_pfn;
     *max_pfn_p = max_pfn;
+
+#ifndef CONFIG_PARAVIRT
+#ifdef __x86_64__
+    BUILD_BUG_ON(l4_table_offset(VIRT_KERNEL_AREA) != 1 ||
+                 l3_table_offset(VIRT_KERNEL_AREA) != 0 ||
+                 l2_table_offset(VIRT_KERNEL_AREA) != 0);
+#else
+    BUILD_BUG_ON(l3_table_offset(VIRT_KERNEL_AREA) != 0 ||
+                 l2_table_offset(VIRT_KERNEL_AREA) == 0);
+#endif
+#endif
 }
 
 grant_entry_t *arch_init_gnttab(int nr_grant_frames)
index 17a9eada5ebd18b9af43ae7386e0026f9647f5ef..5932bfb49f497f01789814e7acd733d45ce6657f 100644 (file)
@@ -418,10 +418,17 @@ ENTRY(__arch_switch_threads)
 .data
 .globl page_table_base
         .align __PAGE_SIZE
+page_table_virt_l2:
+        PTE(page_table_virt_l1 + L2_PROT)
+        .align __PAGE_SIZE, 0
+page_table_virt_l3:
+        PTE(page_table_virt_l2 + L3_PROT)
+        .align __PAGE_SIZE, 0
 page_table_l3:
         PTE(page_table_l2 + L3_PROT)
         .align __PAGE_SIZE, 0
 page_table_base:
         PTE(page_table_l3 + L4_PROT)
+        PTE(page_table_virt_l3 + L4_PROT)
         .align __PAGE_SIZE, 0
 #endif