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

Re: [Xen-devel] [PATCH v3 02/16] libxc: Load BIOS and ACPI table into guest memory



On Tue, Mar 01, 2016 at 11:51:30AM +0000, Wei Liu wrote:
> On Thu, Feb 25, 2016 at 02:56:00PM +0000, Anthony PERARD wrote:
> > This adds two new firmware module, bios_module and full_acpi_module. They
> > are loaded in the guest memory and final location is provided to hvmloader
> > via the hvm_start_info struct.
> > 
> > This patch create the hvm_start_info struct for HVM guest that have a
> > device model, so this is now common code with HVM guest without device
> > model.
> > 
> 
> I think you also need to update the relevant headers to say the
> structures is now used by both PVHv2 and HVM.

Yes, I can do that.

> > Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
> > ---
> > Change in V3:
> > - rename acpi_table_module to full_acpi_module.
> > - factorise module loading, using new function to load existing optinal
> >   module, this should not change anything
> > - should now use the same code to loads modules as for HVMlite VMs.
> >   this avoid duplication of code.
> > - no more generic cmdline with a list of modules, each module have its name
> >   in the module specific cmdline.
> > - scope change for common code between hvmlite and hvmloader
> > ---
> >  tools/libxc/include/xc_dom.h   |   4 ++
> >  tools/libxc/xc_dom_hvmloader.c |   4 ++
> >  tools/libxc/xc_dom_x86.c       | 130 
> > ++++++++++++++++++++++++++++-------------
> >  3 files changed, 96 insertions(+), 42 deletions(-)
> > 
> > diff --git a/tools/libxc/include/xc_dom.h b/tools/libxc/include/xc_dom.h
> > index 6ebe946..7dc3fe7 100644
> > --- a/tools/libxc/include/xc_dom.h
> > +++ b/tools/libxc/include/xc_dom.h
> > @@ -209,6 +209,10 @@ struct xc_dom_image {
> >      /* If unset disables the setup of the IOREQ pages. */
> >      bool device_model;
> >  
> > +    /* BIOS and ACPI tables passed to HVMLOADER */
> > +    struct xc_hvm_firmware_module bios_module;
> > +    struct xc_hvm_firmware_module full_acpi_module;
> > +
> >      /* Extra ACPI tables passed to HVMLOADER */
> >      struct xc_hvm_firmware_module acpi_module;
> >  
> 
> What is the difference between "ACPI tables" and "Extra ACPI tables"?

The first one is a DSDT table that we generate and compile into AML that is
currently embedded into hvmloader.

The extra one are tables that a user can provide via the "acpi_firmware"
option from xl.

> > diff --git a/tools/libxc/xc_dom_hvmloader.c b/tools/libxc/xc_dom_hvmloader.c
> > index 54e096c..2c965c9 100644
> > --- a/tools/libxc/xc_dom_hvmloader.c
> > +++ b/tools/libxc/xc_dom_hvmloader.c
> > @@ -160,6 +160,10 @@ static int modules_init(struct xc_dom_image *dom)
> >  {
> >      int rc;
> [...]
> >      }
> >      else
> >      {
> > +        start_info_size +=
> > +            sizeof(struct hvm_modlist_entry) * HVMLOADER_MODULE_MAX_COUNT;
> > +        /* Add extra space to write modules name */
> > +        start_info_size += 10 * HVMLOADER_MODULE_MAX_COUNT;
> 
> Why magic number 10? I guess this is the length limit of the name? Can
> you have a #define somewhere?

I wanted to reserve some space to write the names of the modules without
knowing the actual size. I can add a define for it.

-- 
Anthony PERARD

_______________________________________________
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®.