On Thu, 2016-01-07 at 17:11 -0500, Boris Ostrovsky wrote: > With commit 8c45adec18e0 ("libxc: create unmapped initrd in domain > builder if supported") location of ramdisk may not be available to > HVMlite guests by the time alloc_magic_pages_hvm() is invoked if the > guest supports unmapped initrd. > > So let's move ramdisk info initialization (along with a few other > operations that are not directly related to allocating magic/special > pages) from alloc_magic_pages_hvm() to bootlate_hvm().
The "few other operations" are just the hvm_info init for standard HVM by this iteration? > --- a/tools/libxc/include/xc_dom.h > +++ b/tools/libxc/include/xc_dom.h > @@ -71,6 +71,7 @@ struct xc_dom_image { > > /* arguments and parameters */ > char *cmdline; > + size_t cmdline_size; Perhaps /* Including NULL and padding/alignment */ ? (That's the sort of thing I don't mind doing on commit if there is agreement and no other changes required) > @@ -1095,8 +1044,8 @@ static int vcpu_hvm(struct xc_dom_image *dom) > /* Set the IP. */ > bsp_ctx.cpu.rip = dom->parms.phys_entry; > > - if ( dom->start_info_pfn ) > - bsp_ctx.cpu.rbx = dom->start_info_pfn << PAGE_SHIFT; > + if ( dom->start_info_seg.pfn ) > + bsp_ctx.cpu.rbx = dom->start_info_seg.pfn << PAGE_SHIFT; Just to check: dom->start_info_pfn is unused/nil in the regular-hvm case, correct (i.e. this code is dm-list specific both before and after)? > + else > + { > + void *hvm_info_page; > + > + if ( (hvm_info_page = xc_map_foreign_range( > + xch, domid, PAGE_SIZE, PROT_READ | PROT_WRITE, > + HVM_INFO_PFN)) == NULL ) > + return -1; > + build_hvm_info(hvm_info_page, dom); > + munmap(hvm_info_page, PAGE_SIZE); > + } Did you test regular HVM guests after this movement? Ian. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel