From: Daniel P. Berrangé Date: Mon, 17 Feb 2025 16:58:27 +0000 (+0000) Subject: conf: support MSDM ACPI table type X-Git-Tag: v11.2.0-rc1~253 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=32765cd14e99411dfd14a230be86f2aecf7e9a7a;p=thirdparty%2Flibvirt.git conf: support MSDM ACPI table type The MSDM ACPI table is an alternative for the SLIC table type, sometimes used by Microsoft for Windows Licensing checks: https://learn.microsoft.com/en-us/previous-versions/windows/hardware/design/dn653305(v=vs.85) Reviewed-by: Michal Privoznik Signed-off-by: Daniel P. Berrangé --- diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 7e0bab5444..e2d9e12a62 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -503,6 +503,10 @@ These options apply to any form of booting of the guest OS. software licensing information. The ACPI table signature in the header will be forced to ``SLIC`` (:since:`Since 1.3.5 (QEMU)`, mis-interpreted as ``rawset`` :since:`Since 5.9.0 (Xen)`). + * ``msdm``: a single ACPI table with header and data, providing + Microsoft Data Management information. The ACPI table signature + in the header will be forced to ``MSDM`` + (:since:`Since 11.2.0`). Each type may be used only once, except for ``raw`` which can appear multiple times. diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 700ed232df..65507391ab 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1462,6 +1462,7 @@ VIR_ENUM_IMPL(virDomainOsACPITable, "raw", "rawset", "slic", + "msdm", ); VIR_ENUM_IMPL(virDomainCFPC, diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 8b7877ece7..2c034faf6d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2485,6 +2485,7 @@ typedef enum { VIR_DOMAIN_OS_ACPI_TABLE_TYPE_RAW, VIR_DOMAIN_OS_ACPI_TABLE_TYPE_RAWSET, VIR_DOMAIN_OS_ACPI_TABLE_TYPE_SLIC, + VIR_DOMAIN_OS_ACPI_TABLE_TYPE_MSDM, VIR_DOMAIN_OS_ACPI_TABLE_TYPE_LAST } virDomainOsACPITable; diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index b5eaf7c233..39d5604454 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -7184,6 +7184,7 @@ raw rawset slic + msdm diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index 06265cb1c0..311c3915c7 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -337,6 +337,7 @@ libxlDomainDefValidate(const virDomainDef *def, break; case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_RAW: + case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_MSDM: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("ACPI table type '%1$s' is not supported"), virDomainOsACPITableTypeToString(def->os.acpiTables[i]->type)); diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 5ecc50d838..67797a8af8 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -132,7 +132,8 @@ VIR_ENUM_IMPL(qemuACPITableSIG, VIR_DOMAIN_OS_ACPI_TABLE_TYPE_LAST, "", /* raw */ "", /* rawset */ - "SLIC"); + "SLIC", + ""); const char * diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 397e2073ef..295be2de5a 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -749,6 +749,7 @@ qemuValidateDomainDefBoot(const virDomainDef *def, break; case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_RAWSET: + case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_MSDM: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("ACPI table type '%1$s' is not supported"), virDomainOsACPITableTypeToString(def->os.acpiTables[i]->type));