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>
*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)
.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