...
``acpi``
- The ``table`` element contains a fully-qualified path to the ACPI table. The
- ``type`` attribute contains the ACPI table type (currently only ``slic`` is
- supported) :since:`Since 1.3.5 (QEMU)` :since:`Since 5.9.0 (Xen)`
+ The ``table`` element contains a fully-qualified path to the ACPI table,
+ with the ``type`` attribute dictating what data must be present in the
+ file:
+
+ * ``raw``: a single ACPI table with header and data, with ACPI
+ signature auto-detected from header (:since:`Since 11.2.0`).
+ * ``rawset``: concatenation of multiple ACPI tables with header
+ and data, each with any ACPI signature, auto-detected from header
+ (:since:`Since 11.2.0`).
+ * ``slic``: a single ACPI table with header and data, providing
+ 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)`).
+
+ Each type may be used only once, except for ``raw`` which can
+ appear multiple times.
SMBIOS System Information
VIR_ENUM_IMPL(virDomainOsACPITable,
VIR_DOMAIN_OS_ACPI_TABLE_TYPE_LAST,
+ "raw",
+ "rawset",
"slic",
);
goto error;
for (j = 0; j < i; j++) {
- if (tables[j]->type == type) {
+ if (tables[j]->type == type &&
+ type != VIR_DOMAIN_OS_ACPI_TABLE_TYPE_RAW) {
virReportError(VIR_ERR_XML_ERROR,
_("ACPI table type '%1$s' may only appear once"),
virDomainOsACPITableTypeToString(type));
VIR_ENUM_DECL(virDomainOsDefFirmwareFeature);
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_LAST
<zeroOrMore>
<element name="table">
<attribute name="type">
- <value>slic</value>
+ <choice>
+ <value>raw</value>
+ <value>rawset</value>
+ <value>slic</value>
+ </choice>
</attribute>
<ref name="absFilePath"/>
</element>
case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_SLIC:
break;
+ case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_RAW:
+ case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_RAWSET:
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("ACPI table type '%1$s' is not supported"),
+ virDomainOsACPITableTypeToString(def->os.acpiTables[i]->type));
+ return -1;
+
default:
case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_LAST:
virReportEnumRangeError(virDomainOsACPITable,
VIR_ENUM_DECL(qemuACPITableSIG);
VIR_ENUM_IMPL(qemuACPITableSIG,
VIR_DOMAIN_OS_ACPI_TABLE_TYPE_LAST,
+ "", /* raw */
+ "", /* rawset */
"SLIC");
case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_SLIC:
break;
+ case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_RAW:
+ case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_RAWSET:
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("ACPI table type '%1$s' is not supported"),
+ virDomainOsACPITableTypeToString(def->os.acpiTables[i]->type));
+ return -1;
+
default:
case VIR_DOMAIN_OS_ACPI_TABLE_TYPE_LAST:
virReportEnumRangeError(virDomainOsACPITable,