|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 06/16] libxl: Load guest ACPI table from file
A user can provide a different ACPI tables than the default one by using
the existing "acpi_firmware" xl's config option or the field
u.hvm.acpi_firmware.
libxl will check if the provided table is a DSDT or not.
Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
---
Change in V3:
- use existing acpi_firmware option to provide an override for the acpi
tables. Will check if it's a DSDT or an extra tables.
---
tools/libxl/libxl_dom.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
index 50abfbc..87853fd 100644
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -905,6 +905,7 @@ static int libxl__domain_firmware(libxl__gc *gc,
int datalen = 0;
void *data;
const char *bios_filename = NULL;
+ const char *full_acpi_tables_filename = NULL;
if (info->u.hvm.firmware)
firmware = info->u.hvm.firmware;
@@ -964,6 +965,10 @@ static int libxl__domain_firmware(libxl__gc *gc,
abort();
}
}
+
+ full_acpi_tables_filename =
+ libxl__abs_path(gc, "dsdt_anycpu_qemu_xen.aml",
+ libxl__xenfirmwaredir_path());
}
if (bios_filename) {
@@ -1008,6 +1013,27 @@ static int libxl__domain_firmware(libxl__gc *gc,
}
}
+ /*
+ * Check if the user supplied ACPI tables are the full tables, or if
+ * there are only extra tables. The full tables start with the DSDT
+ * table, and the signature is in the first four bytes.
+ */
+ if (!dom->acpi_module.length
+ || strncmp("DSDT", (char*)dom->acpi_module.data, 4)) {
+ if (full_acpi_tables_filename) {
+ rc = libxl__load_hvm_firmware_module(gc, full_acpi_tables_filename,
+ "ACPI tables",
+ &dom->full_acpi_module);
+ if (rc) goto out;
+ }
+ } else {
+ /* Use user supplied DSDT tables. */
+ dom->full_acpi_module.data = dom->acpi_module.data;
+ dom->full_acpi_module.length = dom->acpi_module.length;
+ dom->acpi_module.length = 0;
+ dom->acpi_module.data = NULL;
+ }
+
return 0;
out:
assert(rc != 0);
--
Anthony PERARD
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |