mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
libxc: Domain builder must align initial virtual mapping to 4MB
boundaries. From: Gerd Hoffmann <kraxel@suse.de> Signed-off-by: Keir Fraser <keir@xensource.com>
This commit is contained in:
1 parent
502043ef90
commit
44480a0820
2 files changed
+6
-1
No files matched your search
@@ -717,6 +717,9 @@ int xc_dom_build_image(struct xc_dom_image *dom)
|
||||
}
|
||||
page_size = XC_DOM_PAGE_SIZE(dom);
|
||||
|
||||
/* 4MB align virtual base address */
|
||||
dom->parms.virt_base &= ~(((uint64_t)1<<22)-1);
|
||||
|
||||
/* load kernel */
|
||||
if (0 != xc_dom_alloc_segment(dom, &dom->kernel_seg, "kernel",
|
||||
dom->kernel_seg.vstart,
|
||||
|
||||
@@ -66,11 +66,12 @@ static int count_pgtables(struct xc_dom_image *dom, int pae,
|
||||
|
||||
extra_pages = dom->alloc_bootstack ? 1 : 0;
|
||||
extra_pages += dom->extra_pages;
|
||||
extra_pages += 128; /* 512kB padding */
|
||||
pages = extra_pages;
|
||||
for (;;)
|
||||
{
|
||||
try_virt_end = round_up(dom->virt_alloc_end + pages * PAGE_SIZE_X86,
|
||||
bits_to_mask(l1_bits));
|
||||
bits_to_mask(22)); /* 4MB alignment */
|
||||
dom->pg_l4 =
|
||||
nr_page_tables(dom->parms.virt_base, try_virt_end, l4_bits);
|
||||
dom->pg_l3 =
|
||||
@@ -313,6 +314,7 @@ static int alloc_magic_pages(struct xc_dom_image *dom)
|
||||
if (xc_dom_feature_translated(dom))
|
||||
dom->shared_info_pfn = xc_dom_alloc_page(dom, "shared info");
|
||||
dom->alloc_bootstack = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||