]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: support MSDM ACPI table type
authorDaniel P. Berrangé <berrange@redhat.com>
Mon, 17 Feb 2025 16:58:27 +0000 (16:58 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Fri, 7 Mar 2025 13:00:10 +0000 (13:00 +0000)
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 <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
docs/formatdomain.rst
src/conf/domain_conf.c
src/conf/domain_conf.h
src/conf/schemas/domaincommon.rng
src/libxl/libxl_domain.c
src/qemu/qemu_command.c
src/qemu/qemu_validate.c

index 7e0bab5444f0d667e9715e2bf1ba7c55b0364347..e2d9e12a62672906c566ae4b08fdb39551b22a3f 100644 (file)
@@ -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.
index 700ed232df4c2f6946eecd94123178fffc7a0799..65507391ab962c080a54d48de9c179f333a6f0ef 100644 (file)
@@ -1462,6 +1462,7 @@ VIR_ENUM_IMPL(virDomainOsACPITable,
               "raw",
               "rawset",
               "slic",
+              "msdm",
 );
 
 VIR_ENUM_IMPL(virDomainCFPC,
index 8b7877ece7455d814b7ec7ed77ea1d1c2c512146..2c034faf6d599b639ba4554b602d47008fd695c8 100644 (file)
@@ -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;
index b5eaf7c23317f1139b2e893abf52d48211dd0b11..39d5604454099c11185c96464b721f8ef8f84dc0 100644 (file)
               <value>raw</value>
               <value>rawset</value>
               <value>slic</value>
+              <value>msdm</value>
             </choice>
           </attribute>
           <ref name="absFilePath"/>
index 06265cb1c031875194771ce2ac5578e234ee93ed..311c3915c704a8369a2d0d88a07539f9f12bf48f 100644 (file)
@@ -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));
index 5ecc50d838fe85926439ea0be3d9da6550e67fd6..67797a8af87e888345f21fd46481a68decfb833c 100644 (file)
@@ -132,7 +132,8 @@ VIR_ENUM_IMPL(qemuACPITableSIG,
               VIR_DOMAIN_OS_ACPI_TABLE_TYPE_LAST,
               "", /* raw */
               "", /* rawset */
-              "SLIC");
+              "SLIC",
+              "");
 
 
 const char *
index 397e2073ef9a8d4775e2470079c8281715fe42c8..295be2de5aa99708105cec027decc25d72afded4 100644 (file)
@@ -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));