[PATCH v2 6/7] conf: support MSDM ACPI table type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux