|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 18/23] libxc/libxl: Allow multiple ACPI modules
On Thu, Aug 04, 2016 at 05:06:46PM -0400, Boris Ostrovsky wrote:
> Provide ability to load multiple ACPI modules. Thie feature is needed
> by PVHv2 guests and will be used in subsequent patches.
>
> We assume that PVHv2 guests do not load their ACPI modules specified
> in the configuration file. We can extend support for that in the future
> if desired.
>
> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
> ---
> v2:
> * New patch. PVH uses 3 modules:
> - rsdp (8 bytes that store RSDT address)
> - acpi_info (1 page, Xen-specific)
> - ACPI tables (multiple pages)
> As an alternative, we could add rsdp_val and rsdp_ptr and
> keep acpi_module as a scalar (acpi_info and ACPI tables are
> usually laid out contiguously). This patch provides a more
> general solution (IMO).
>
> tools/libxc/include/xc_dom.h | 5 +++--
> tools/libxc/xc_dom_hvmloader.c | 3 ++-
> tools/libxl/libxl_dom.c | 26 ++++++++++++++++++--------
> 3 files changed, 23 insertions(+), 11 deletions(-)
>
> diff --git a/tools/libxc/include/xc_dom.h b/tools/libxc/include/xc_dom.h
> index de7dca9..608cbc2 100644
> --- a/tools/libxc/include/xc_dom.h
> +++ b/tools/libxc/include/xc_dom.h
> @@ -212,8 +212,9 @@ struct xc_dom_image {
> /* BIOS/Firmware passed to HVMLOADER */
> struct xc_hvm_firmware_module system_firmware_module;
>
> - /* Extra ACPI tables passed to HVMLOADER */
> - struct xc_hvm_firmware_module acpi_module;
> + /* Extra ACPI tables */
> +#define MAX_ACPI_MODULES 4
> + struct xc_hvm_firmware_module acpi_modules[MAX_ACPI_MODULES];
>
> /* Extra SMBIOS structures passed to HVMLOADER */
> struct xc_hvm_firmware_module smbios_module;
> diff --git a/tools/libxc/xc_dom_hvmloader.c b/tools/libxc/xc_dom_hvmloader.c
> index 6eb8516..59f94e5 100644
> --- a/tools/libxc/xc_dom_hvmloader.c
> +++ b/tools/libxc/xc_dom_hvmloader.c
> @@ -172,7 +172,8 @@ static int modules_init(struct xc_dom_image *dom)
> rc = module_init_one(dom, &dom->system_firmware_module,
> "System Firmware module");
> if ( rc ) goto err;
> - rc = module_init_one(dom, &dom->acpi_module, "ACPI module");
> + /* Only one module can be added */
> + rc = module_init_one(dom, &dom->acpi_modules[0], "ACPI module");
> if ( rc ) goto err;
> rc = module_init_one(dom, &dom->smbios_module, "SMBIOS module");
> if ( rc ) goto err;
> diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
> index 2a1793d..22d6868 100644
> --- a/tools/libxl/libxl_dom.c
> +++ b/tools/libxl/libxl_dom.c
> @@ -818,7 +818,8 @@ static int hvm_build_set_params(xc_interface *handle,
> uint32_t domid,
>
> static int hvm_build_set_xs_values(libxl__gc *gc,
> uint32_t domid,
> - struct xc_dom_image *dom)
> + struct xc_dom_image *dom,
> + libxl_domain_build_info *info)
My slight preference is that if only device_model_version is needed you
pass that directly to this function. But I don't feel too strong about
this. If you're going to pass info please constify it.
Code-wise, looks good.
Wei.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |