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) Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> --- docs/formatdomain.rst | 4 ++++ src/conf/domain_conf.c | 1 + src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 1 + src/libxl/libxl_domain.c | 1 + src/qemu/qemu_command.c | 3 ++- src/qemu/qemu_validate.c | 1 + 7 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 895f74a42a..3bf1ff7714 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 530473e200..7bdfe21bff 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 299e2cbd5b..7880cbedff 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2478,6 +2478,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 @@ <value>raw</value> <value>rawset</value> <value>slic</value> + <value>msdm</value> </choice> </attribute> <ref name="absFilePath"/> diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index e31d92d903..c5a556ec78 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -339,6 +339,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)); -- 2.47.1