[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [Draft A] Boot ABI for HVM guests without a device-model



On Thu, Jun 11, 2015 at 10:43:08AM +0200, Roger Pau Monné wrote:
> El 10/06/15 a les 20.55, Konrad Rzeszutek Wilk ha escrit:
> > On Wed, Jun 10, 2015 at 02:34:00PM +0200, Roger Pau Monné wrote:
> >> Hello,
> >>
> >> The discussion in [1] lead to an agreement of the missing pieces in PVH 
> >> (or HVM without a device-model) in order to progress with it's 
> >> implementation.
> >>
> >> One of the missing pieces is a new boot ABI, that replaces the PV boot 
> >> ABI. The aim of this new boot ABI is to remove the limitations of the 
> > 
> > To be fair, there is an existing boot ABI.
> > 
> > It is the same as the PV boot but since it is an PV autotranslated
> > guest some of the values that an PV guest require are undefined.
> > 
> > With that in mind, why cannot we re-use that (xen_start_info) and
> > any field which is PV specific can be treated as reserved?
> 
> IMHO I would rather get rid of start_info and fetch everything using
> HVMPARAMS instead, this is more similar to what ARM guests already do.
> This means we can get rid of start_info in the long run, and that we
> don't paint ourselves into a corner, HVMPARAMS can always be expanded
> without problems.
> 
> >> PV boot ABI, that are no longer present when using auto-translated 
> >> guests. The new boot protocol should allow to use the same entry point 
> >> for both 32bit and 64bit guests, and let the guest choose it's bitness 
> >> at run time without the domain builder knowing in advance.
> > 
> > I like that idea, but that will make the work going forward
> > on the 32-bit PVH and AMD PVH move out at least another half year
> > - which is rather sad.
> > 
> > Also this change will require modifying the Linux 64-bit PVH
> > part. That should be mentioned - and that is likely going to
> > take also three months.
> > 
> > 
> >>
> >> Roger.
> >>
> >> [1] http://lists.xen.org/archives/html/xen-devel/2015-06/msg00258.html
> >>
> >> ---
> >> HVM direct boot ABI
> >>
> >> Since the Xen entry point into the kernel can be different from the 
> >> native entry point, ELFNOTES are used in order to tell the domain 
> >> builder how to load and jump into the kernel entry point. At least the 
> >> following ELFNOTES are required in order to use this boot ABI:
> >>
> >> ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS,       .asciz, "FreeBSD")
> >> ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION,  .asciz, 
> >> __XSTRING(__FreeBSD_version))
> >> ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION,    .asciz, "xen-3.0")
> >> ELFNOTE(Xen, XEN_ELFNOTE_PADDR_OFFSET,   .quad,  KERNBASE)
> >> ELFNOTE(Xen, XEN_ELFNOTE_PADDR_ENTRY,    .quad,  xen_start32)
> >> ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .asciz, 
> >> "writable_descriptor_tables|auto_translated_physmap|supervisor_mode_kernel|hvm_callback_vector")
> > 
> > That will choke on older hypervisors. That is a normal PV
> > guest won't boot anymore. That is because the older hypervisors
> > will choke on 'hvm_callback_vector' being in the XEN_ELFNOTE_FEATURES.
> 
> I see, this is what FreeBSD currently uses. We are going to choke on
> older hypervisors anyway, since FreeBSD only supports PVH.

Linux would choke too. I would like Linux (next-version) to still
work on Amazon installations that use older hypervisor.

> 
> > You have to stick that in XEN_ELFNOTE_SUPPORTED_FEATURES field.
> > 
> >> ELFNOTE(Xen, XEN_ELFNOTE_LOADER,         .asciz, "generic")
> >>
> >> The first three notes contain information about the guest kernel and 
> >> the Xen hypercall ABI version. The following notes are of special 
> >> interest:
> >>
> >>  * XEN_ELFNOTE_PADDR_OFFSET: the offset of the ELF paddr field from the
> >>    actual required physical address.
> >>  * XEN_ELFNOTE_PADDR_ENTRY: the 32bit entry point into the kernel.
> > 
> > Is 'P' suppose to be 'physical' ?
> > 
> > I am not sure how this will work with an ELF 64-bit binary like
> > the Linux kernel. Usually we use the virtual address but with
> > us starting in 32-bit mode with an 64-bit virtual address won't work.
> 
> That's why we are defining a new entry point instead of reusing the
> current XEN_ELFNOTE_ENTRY note. This entry point is expected to be a
> 32bit physical address.

Thanks, Jan clued me in.
> 
> > But the ELF loader could figure out the offset of the virtual
> > address from the ELF starting point and just call at the delta - in
> > which case having XEN_ELFNOTE_ENTRY can be used with the
> > understanding that we will just call at that that offset.
> 
> I'm not following you here, I don't think it's possible to reuse the
> same entry point, that's why this new ELFNOTE is proposed.

<nods>
> 
> Roger.
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.