diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-02-02 15:41:45 +0000 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-02-02 15:41:45 +0000 |
commit | 44480a08208d2a31fd7c5ff66aaa7cf44f7176bb (patch) | |
tree | e1b03fda36cef81769f511b3b4df925d0d24d48e /tools/libxc/xc_dom_x86.c | |
parent | 502043ef9001010fc8f6390a15b50d584d1e088f (diff) | |
download | xen-44480a08208d2a31fd7c5ff66aaa7cf44f7176bb.tar.gz xen-44480a08208d2a31fd7c5ff66aaa7cf44f7176bb.tar.bz2 xen-44480a08208d2a31fd7c5ff66aaa7cf44f7176bb.zip |
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>
Diffstat (limited to 'tools/libxc/xc_dom_x86.c')
-rw-r--r-- | tools/libxc/xc_dom_x86.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c index 9e489c320d..fdc3d4ba5e 100644 --- a/tools/libxc/xc_dom_x86.c +++ b/tools/libxc/xc_dom_x86.c @@ -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; } |