[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] new domain builder breaks compatibility
Keir Fraser wrote: > On 2/2/07 07:59, "Gerd Hoffmann" <kraxel@xxxxxxx> wrote: > >>> I'll handle this and update xen.h. >> Restoring the 4MB alignment is easy too, see attached patch (which also >> fixes the 4MB alignment for virt_base). > > I suppose it is nice to stick with the guarantees described in xen.h, since > it is so easy to do so. Slightly updated version of the patch, the previous one did fixup virt_base too late. This one should work in theory. It's not really tested though, the VIRT_BASE specified by linux kernels is at a 4MB border anyway, so the fixup is a no-op ... cheers, Gerd -- Gerd Hoffmann <kraxel@xxxxxxx> --- tools/libxc/xc_dom_core.c | 3 +++ tools/libxc/xc_dom_x86.c | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) Index: build-32-unstable-13788/tools/libxc/xc_dom_x86.c =================================================================== --- build-32-unstable-13788.orig/tools/libxc/xc_dom_x86.c +++ build-32-unstable-13788/tools/libxc/xc_dom_x86.c @@ -66,11 +66,12 @@ static int count_pgtables(struct xc_dom_ 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_d if (xc_dom_feature_translated(dom)) dom->shared_info_pfn = xc_dom_alloc_page(dom, "shared info"); dom->alloc_bootstack = 1; + return 0; } Index: build-32-unstable-13788/tools/libxc/xc_dom_core.c =================================================================== --- build-32-unstable-13788.orig/tools/libxc/xc_dom_core.c +++ build-32-unstable-13788/tools/libxc/xc_dom_core.c @@ -717,6 +717,9 @@ int xc_dom_build_image(struct xc_dom_ima } 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, _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |