summaryrefslogtreecommitdiffstats
path: root/src/main/resources/libvirt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/resources/libvirt')
-rw-r--r--src/main/resources/libvirt/rng/domainbackup.rng6
-rw-r--r--src/main/resources/libvirt/rng/domaincaps.rng24
-rw-r--r--src/main/resources/libvirt/rng/domaincommon.rng641
-rw-r--r--src/main/resources/libvirt/rng/nodedev.rng59
-rw-r--r--src/main/resources/libvirt/rng/sysinfo.rng34
-rw-r--r--src/main/resources/libvirt/rng/sysinfocommon.rng204
6 files changed, 677 insertions, 291 deletions
diff --git a/src/main/resources/libvirt/rng/domainbackup.rng b/src/main/resources/libvirt/rng/domainbackup.rng
index 80ba155..91cf2a7 100644
--- a/src/main/resources/libvirt/rng/domainbackup.rng
+++ b/src/main/resources/libvirt/rng/domainbackup.rng
@@ -90,6 +90,12 @@
<ref name="absFilePath"/>
</attribute>
</group>
+ <group>
+ <attribute name="transport">
+ <value>fd</value>
+ </attribute>
+ <attribute name="fdgroup"/>
+ </group>
</choice>
</element>
<ref name="backupDisksPull"/>
diff --git a/src/main/resources/libvirt/rng/domaincaps.rng b/src/main/resources/libvirt/rng/domaincaps.rng
index 3559d2a..7edae54 100644
--- a/src/main/resources/libvirt/rng/domaincaps.rng
+++ b/src/main/resources/libvirt/rng/domaincaps.rng
@@ -237,6 +237,9 @@
<optional>
<ref name="panic"/>
</optional>
+ <optional>
+ <ref name="console"/>
+ </optional>
</element>
</define>
@@ -317,6 +320,13 @@
</element>
</define>
+ <define name="console">
+ <element name="console">
+ <ref name="supported"/>
+ <ref name="enum"/>
+ </element>
+ </define>
+
<define name="interface">
<element name="interface">
<ref name="supported"/>
@@ -358,6 +368,9 @@
<ref name="ps2"/>
</optional>
<optional>
+ <ref name="tdx"/>
+ </optional>
+ <optional>
<ref name="sev"/>
</optional>
<optional>
@@ -421,6 +434,12 @@
</element>
</define>
+ <define name="tdx">
+ <element name="tdx">
+ <ref name="supported"/>
+ </element>
+ </define>
+
<define name="sev">
<element name="sev">
<ref name="supported"/>
@@ -438,6 +457,11 @@
<data type="unsignedInt"/>
</element>
</optional>
+ <optional>
+ <element name="cpu0Id">
+ <data type="string"/>
+ </element>
+ </optional>
</element>
</define>
diff --git a/src/main/resources/libvirt/rng/domaincommon.rng b/src/main/resources/libvirt/rng/domaincommon.rng
index 7121519..9782dca 100644
--- a/src/main/resources/libvirt/rng/domaincommon.rng
+++ b/src/main/resources/libvirt/rng/domaincommon.rng
@@ -7,6 +7,7 @@
<include href="cputypes.rng"/>
<include href="nwfilter_params.rng"/>
<include href="privatedata.rng"/>
+ <include href="sysinfocommon.rng"/>
<define name="createMode">
<data type="unsignedInt">
@@ -32,8 +33,33 @@
<define name="domaincontents">
<ref name="hvs"/>
+ <optional>
+ <attribute name="id">
+ <ref name="unsignedInt"/>
+ </attribute>
+ </optional>
<interleave>
- <ref name="ids"/>
+ <element name="name">
+ <ref name="objectNameWithSlash"/>
+ </element>
+ <optional>
+ <element name="uuid">
+ <ref name="UUID"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="hwuuid">
+ <ref name="UUID"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="genid">
+ <choice>
+ <ref name="UUID"/>
+ <empty/>
+ </choice>
+ </element>
+ </optional>
<optional>
<ref name="title"/>
</optional>
@@ -51,6 +77,7 @@
</zeroOrMore>
<ref name="os"/>
<ref name="clock"/>
+ <ref name="throttlegroups"/>
<ref name="resources"/>
<ref name="features"/>
<ref name="events"/>
@@ -528,6 +555,9 @@
<value>s390-pv</value>
</attribute>
</group>
+ <group>
+ <ref name="launchSecurityTDX"/>
+ </group>
</choice>
</element>
</define>
@@ -623,6 +653,44 @@
</optional>
</interleave>
</define>
+
+ <define name="launchSecurityTDX">
+ <attribute name="type">
+ <value>tdx</value>
+ </attribute>
+ <interleave>
+ <optional>
+ <element name="policy">
+ <ref name="hexuint"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mrConfigId">
+ <data type="string"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mrOwner">
+ <data type="string"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="mrOwnerConfig">
+ <data type="string"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="quoteGenerationService">
+ <optional>
+ <attribute name="path">
+ <ref name="absFilePath"/>
+ </attribute>
+ </optional>
+ </element>
+ </optional>
+ </interleave>
+ </define>
+
<!--
Enable or disable perf events for the domain. For each
of the events the following rules apply:
@@ -679,37 +747,6 @@
</element>
</define>
- <!--
- The Identifiers can be:
- - an optional id attribute with a number on the domain element
- - a mandatory name
- - an optional uuid
- -->
- <define name="ids">
- <optional>
- <attribute name="id">
- <ref name="unsignedInt"/>
- </attribute>
- </optional>
- <interleave>
- <element name="name">
- <ref name="objectNameWithSlash"/>
- </element>
- <optional>
- <element name="uuid">
- <ref name="UUID"/>
- </element>
- </optional>
- <optional>
- <element name="genid">
- <choice>
- <ref name="UUID"/>
- <empty/>
- </choice>
- </element>
- </optional>
- </interleave>
- </define>
<define name="idmap">
<element name="idmap">
<interleave>
@@ -1564,6 +1601,11 @@
</element>
</optional>
<optional>
+ <element name="shim">
+ <text/>
+ </element>
+ </optional>
+ <optional>
<element name="dtb">
<ref name="absFilePath"/>
</element>
@@ -1635,7 +1677,10 @@
<ref name="encryption"/>
</optional>
<optional>
- <ref name="diskIoTune"/>
+ <choice>
+ <ref name="throttlefilters"/>
+ <ref name="diskIoTune"/>
+ </choice>
</optional>
<optional>
<ref name="alias"/>
@@ -1669,7 +1714,7 @@
<element name="product">
<data type="string">
<!-- All printable characters -->
- <param name="pattern">[&#x20;-&#x7E;]{0,16}</param>
+ <param name="pattern">[&#x20;-&#x7E;]{0,40}</param>
</data>
</element>
</optional>
@@ -1768,6 +1813,8 @@
<value>virtio</value>
<value>virtio-transitional</value>
<value>virtio-non-transitional</value>
+ <value>usb-storage</value>
+ <value>usb-bot</value>
</choice>
</attribute>
</optional>
@@ -2519,9 +2566,14 @@
</define>
<define name="diskTargetDev">
- <data type="string">
- <param name="pattern">(ioemu:)?(fd|hd|sd|vd|xvd|ubd)[a-zA-Z0-9_]+</param>
- </data>
+ <choice>
+ <data type="string">
+ <param name="pattern">(ioemu:)?(fd|hd|sd|vd|xvd|ubd)[a-zA-Z0-9_]+</param>
+ </data>
+ <data type="string">
+ <param name="pattern">nvme[0-9]+n[0-9]+(p[0-9]+)?</param>
+ </data>
+ </choice>
</define>
<define name="diskTarget">
@@ -2541,6 +2593,7 @@
<value>uml</value> <!-- NOT USED ANYMORE -->
<value>sata</value>
<value>sd</value>
+ <value>nvme</value>
</choice>
</attribute>
</optional>
@@ -2606,7 +2659,7 @@
</element>
</define>
- <define name="diskDriverIothreads">
+ <define name="iothreadMapping">
<element name="iothreads">
<oneOrMore>
<element name="iothread">
@@ -2687,7 +2740,7 @@
</element>
</optional>
<optional>
- <ref name="diskDriverIothreads"/>
+ <ref name="iothreadMapping"/>
</optional>
</interleave>
</element>
@@ -3046,6 +3099,16 @@
</attribute>
</optional>
</group>
+ <group>
+ <attribute name="type">
+ <value>nvme</value>
+ </attribute>
+ <optional>
+ <element name="serial">
+ <ref name="diskSerial"/>
+ </element>
+ </optional>
+ </group>
</choice>
<optional>
<element name="driver">
@@ -3070,6 +3133,9 @@
<optional>
<ref name="driverIOThread"/>
</optional>
+ <optional>
+ <ref name="iothreadMapping"/>
+ </optional>
<ref name="virtioOptions"/>
</element>
</optional>
@@ -3485,7 +3551,37 @@
<value>vhostuser</value>
</attribute>
<interleave>
- <ref name="unixSocketSource"/>
+ <optional>
+ <element name="source">
+ <optional>
+ <attribute name="type">
+ <value>unix</value>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="path">
+ <ref name="absFilePath"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="mode">
+ <choice>
+ <value>server</value>
+ <value>client</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="dev">
+ <ref name="deviceName"/>
+ </attribute>
+ </optional>
+ <optional>
+ <ref name="reconnect"/>
+ </optional>
+ <empty/>
+ </element>
+ </optional>
<ref name="interface-options"/>
</interleave>
</group>
@@ -3813,6 +3909,11 @@
<ref name="virYesNo"/>
</attribute>
</optional>
+ <optional>
+ <attribute name="currentAddress">
+ <ref name="uniMacAddr"/>
+ </attribute>
+ </optional>
<empty/>
</element>
</optional>
@@ -4516,6 +4617,16 @@
<ref name="addrIPorName"/>
</attribute>
</optional>
+ <optional>
+ <attribute name="username">
+ <text/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="passwd">
+ <text/>
+ </attribute>
+ </optional>
<ref name="listenElements"/>
</group>
<group>
@@ -4527,11 +4638,6 @@
<text/>
</attribute>
</optional>
- <optional>
- <attribute name="fullscreen">
- <ref name="virYesNo"/>
- </attribute>
- </optional>
</group>
<group>
<attribute name="type">
@@ -6144,6 +6250,7 @@
<value>intel</value>
<value>smmuv3</value>
<value>virtio</value>
+ <value>amd</value>
</choice>
</attribute>
<interleave>
@@ -6179,6 +6286,16 @@
<ref name="virOnOff"/>
</attribute>
</optional>
+ <optional>
+ <attribute name="xtsup">
+ <ref name="virOnOff"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="passthrough">
+ <ref name="virOnOff"/>
+ </attribute>
+ </optional>
</element>
</optional>
<optional>
@@ -6833,6 +6950,37 @@
</interleave>
</element>
</define>
+ <define name="throttlegroup">
+ <element name="throttlegroup">
+ <ref name="iotune"/>
+ </element>
+ </define>
+ <!--
+ A set of optional throttlegroups
+ -->
+ <define name="throttlegroups">
+ <optional>
+ <element name="throttlegroups">
+ <zeroOrMore>
+ <ref name="throttlegroup"/>
+ </zeroOrMore>
+ </element>
+ </optional>
+ </define>
+ <!--
+ A set of throttlefilters to reference throttlegroups
+ -->
+ <define name="throttlefilters">
+ <element name="throttlefilters">
+ <zeroOrMore>
+ <element name="throttlefilter">
+ <attribute name="group">
+ <data type="string"/>
+ </attribute>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
<!--
A set of optional features: PAE, APIC, ACPI, GIC, TCG,
HyperV Enlightenment, KVM features, paravirtual spinlocks and HAP support
@@ -6996,6 +7144,9 @@
<ref name="featurestate"/>
</element>
</optional>
+ <optional>
+ <ref name="aia"/>
+ </optional>
</interleave>
</element>
</optional>
@@ -7021,63 +7172,11 @@
<value>smbios</value>
</attribute>
<interleave>
- <optional>
- <element name="bios">
- <oneOrMore>
- <element name="entry">
- <attribute name="name">
- <ref name="sysinfo-bios-name"/>
- </attribute>
- <ref name="sysinfo-value"/>
- </element>
- </oneOrMore>
- </element>
- </optional>
- <optional>
- <element name="system">
- <oneOrMore>
- <element name="entry">
- <attribute name="name">
- <ref name="sysinfo-system-name"/>
- </attribute>
- <ref name="sysinfo-value"/>
- </element>
- </oneOrMore>
- </element>
- </optional>
- <zeroOrMore>
- <element name="baseBoard">
- <oneOrMore>
- <element name="entry">
- <attribute name="name">
- <ref name="sysinfo-baseBoard-name"/>
- </attribute>
- <ref name="sysinfo-value"/>
- </element>
- </oneOrMore>
- </element>
- </zeroOrMore>
- <optional>
- <element name="chassis">
- <oneOrMore>
- <element name="entry">
- <attribute name="name">
- <ref name="sysinfo-chassis-name"/>
- </attribute>
- <ref name="sysinfo-value"/>
- </element>
- </oneOrMore>
- </element>
- </optional>
- <optional>
- <element name="oemStrings">
- <oneOrMore>
- <element name="entry">
- <ref name="sysinfo-value"/>
- </element>
- </oneOrMore>
- </element>
- </optional>
+ <ref name="sysinfo-smbios-group-bios"/>
+ <ref name="sysinfo-smbios-group-system"/>
+ <ref name="sysinfo-smbios-group-baseboard"/>
+ <ref name="sysinfo-smbios-group-chassis"/>
+ <ref name="sysinfo-smbios-group-oemstrings"/>
</interleave>
</group>
<group>
@@ -7085,80 +7184,24 @@
<value>fwcfg</value>
</attribute>
<zeroOrMore>
- <element name="entry">
- <attribute name="name">
- <data type="string"/>
- </attribute>
- <choice>
- <group>
- <attribute name="file">
- <data type="string"/>
- </attribute>
- <empty/>
- </group>
- <group>
- <ref name="sysinfo-value"/>
- </group>
- </choice>
- </element>
+ <ref name="sysinfo-fwcfg-entry"/>
</zeroOrMore>
</group>
</choice>
</element>
</define>
- <define name="sysinfo-bios-name">
- <choice>
- <value>vendor</value>
- <value>version</value>
- <value>date</value>
- <value>release</value>
- </choice>
- </define>
-
- <define name="sysinfo-system-name">
- <choice>
- <value>manufacturer</value>
- <value>product</value>
- <value>version</value>
- <value>serial</value>
- <value>uuid</value>
- <value>sku</value>
- <value>family</value>
- </choice>
- </define>
-
- <define name="sysinfo-baseBoard-name">
- <choice>
- <value>manufacturer</value>
- <value>product</value>
- <value>version</value>
- <value>serial</value>
- <value>asset</value>
- <value>location</value>
- </choice>
- </define>
-
- <define name="sysinfo-chassis-name">
- <choice>
- <value>manufacturer</value>
- <value>version</value>
- <value>serial</value>
- <value>asset</value>
- <value>sku</value>
- </choice>
- </define>
-
- <define name="sysinfo-value">
- <data type="string"/>
- </define>
-
<define name="acpiTable">
<element name="acpi">
<zeroOrMore>
<element name="table">
<attribute name="type">
- <value>slic</value>
+ <choice>
+ <value>raw</value>
+ <value>rawset</value>
+ <value>slic</value>
+ <value>msdm</value>
+ </choice>
</attribute>
<ref name="absFilePath"/>
</element>
@@ -7294,6 +7337,18 @@
</element>
</define>
+ <define name="aia">
+ <element name="aia">
+ <attribute name="value">
+ <choice>
+ <value>none</value>
+ <value>aplic</value>
+ <value>aplic-imsic</value>
+ </choice>
+ </attribute>
+ </element>
+ </define>
+
<define name="address">
<element name="address">
<choice>
@@ -7800,134 +7855,138 @@
</element>
</define>
+ <define name="iotune">
+ <interleave>
+ <choice>
+ <element name="total_bytes_sec">
+ <data type="unsignedLong"/>
+ </element>
+ <group>
+ <interleave>
+ <optional>
+ <element name="read_bytes_sec">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="write_bytes_sec">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ </interleave>
+ </group>
+ </choice>
+ <choice>
+ <element name="total_iops_sec">
+ <data type="unsignedLong"/>
+ </element>
+ <group>
+ <interleave>
+ <optional>
+ <element name="read_iops_sec">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="write_iops_sec">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ </interleave>
+ </group>
+ </choice>
+ <choice>
+ <element name="total_bytes_sec_max">
+ <data type="unsignedLong"/>
+ </element>
+ <group>
+ <interleave>
+ <optional>
+ <element name="read_bytes_sec_max">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="write_bytes_sec_max">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ </interleave>
+ </group>
+ </choice>
+ <choice>
+ <element name="total_iops_sec_max">
+ <data type="unsignedLong"/>
+ </element>
+ <group>
+ <interleave>
+ <optional>
+ <element name="read_iops_sec_max">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="write_iops_sec_max">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ </interleave>
+ </group>
+ </choice>
+ <optional>
+ <element name="size_iops_sec">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="group_name">
+ <text/>
+ </element>
+ </optional>
+ <choice>
+ <element name="total_bytes_sec_max_length">
+ <data type="unsignedLong"/>
+ </element>
+ <group>
+ <interleave>
+ <optional>
+ <element name="read_bytes_sec_max_length">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="write_bytes_sec_max_length">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ </interleave>
+ </group>
+ </choice>
+ <choice>
+ <element name="total_iops_sec_max_length">
+ <data type="unsignedLong"/>
+ </element>
+ <group>
+ <interleave>
+ <optional>
+ <element name="read_iops_sec_max_length">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="write_iops_sec_max_length">
+ <data type="unsignedLong"/>
+ </element>
+ </optional>
+ </interleave>
+ </group>
+ </choice>
+ </interleave>
+ </define>
+
<define name="diskIoTune">
<element name="iotune">
- <interleave>
- <choice>
- <element name="total_bytes_sec">
- <data type="unsignedLong"/>
- </element>
- <group>
- <interleave>
- <optional>
- <element name="read_bytes_sec">
- <data type="unsignedLong"/>
- </element>
- </optional>
- <optional>
- <element name="write_bytes_sec">
- <data type="unsignedLong"/>
- </element>
- </optional>
- </interleave>
- </group>
- </choice>
- <choice>
- <element name="total_iops_sec">
- <data type="unsignedLong"/>
- </element>
- <group>
- <interleave>
- <optional>
- <element name="read_iops_sec">
- <data type="unsignedLong"/>
- </element>
- </optional>
- <optional>
- <element name="write_iops_sec">
- <data type="unsignedLong"/>
- </element>
- </optional>
- </interleave>
- </group>
- </choice>
- <choice>
- <element name="total_bytes_sec_max">
- <data type="unsignedLong"/>
- </element>
- <group>
- <interleave>
- <optional>
- <element name="read_bytes_sec_max">
- <data type="unsignedLong"/>
- </element>
- </optional>
- <optional>
- <element name="write_bytes_sec_max">
- <data type="unsignedLong"/>
- </element>
- </optional>
- </interleave>
- </group>
- </choice>
- <choice>
- <element name="total_iops_sec_max">
- <data type="unsignedLong"/>
- </element>
- <group>
- <interleave>
- <optional>
- <element name="read_iops_sec_max">
- <data type="unsignedLong"/>
- </element>
- </optional>
- <optional>
- <element name="write_iops_sec_max">
- <data type="unsignedLong"/>
- </element>
- </optional>
- </interleave>
- </group>
- </choice>
- <optional>
- <element name="size_iops_sec">
- <data type="unsignedLong"/>
- </element>
- </optional>
- <optional>
- <element name="group_name">
- <text/>
- </element>
- </optional>
- <choice>
- <element name="total_bytes_sec_max_length">
- <data type="unsignedLong"/>
- </element>
- <group>
- <interleave>
- <optional>
- <element name="read_bytes_sec_max_length">
- <data type="unsignedLong"/>
- </element>
- </optional>
- <optional>
- <element name="write_bytes_sec_max_length">
- <data type="unsignedLong"/>
- </element>
- </optional>
- </interleave>
- </group>
- </choice>
- <choice>
- <element name="total_iops_sec_max_length">
- <data type="unsignedLong"/>
- </element>
- <group>
- <interleave>
- <optional>
- <element name="read_iops_sec_max_length">
- <data type="unsignedLong"/>
- </element>
- </optional>
- <optional>
- <element name="write_iops_sec_max_length">
- <data type="unsignedLong"/>
- </element>
- </optional>
- </interleave>
- </group>
- </choice>
- </interleave>
+ <ref name="iotune"/>
</element>
</define>
diff --git a/src/main/resources/libvirt/rng/nodedev.rng b/src/main/resources/libvirt/rng/nodedev.rng
index 42a0cdc..31ce517 100644
--- a/src/main/resources/libvirt/rng/nodedev.rng
+++ b/src/main/resources/libvirt/rng/nodedev.rng
@@ -83,6 +83,7 @@
<ref name="capdrm"/>
<ref name="capmdev"/>
<ref name="capccwdev"/>
+ <ref name="capccwgroupdev"/>
<ref name="capcssdev"/>
<ref name="capvdpa"/>
<ref name="capapcard"/>
@@ -669,6 +670,63 @@
</interleave>
</define>
+ <define name="capccwgrouptypeqeth">
+ <attribute name="type">
+ <choice>
+ <value>qeth_generic</value>
+ <value>qeth_layer2</value>
+ <value>qeth_layer3</value>
+ </choice>
+ </attribute>
+ <interleave>
+ <element name="card_type"><text/></element>
+ <element name="chpid"><text/></element>
+ </interleave>
+ </define>
+
+ <define name="capccwgroupdev">
+ <attribute name="type">
+ <value>ccwgroup</value>
+ </attribute>
+ <optional>
+ <element name="state">
+ <choice>
+ <value>online</value>
+ <value>offline</value>
+ </choice>
+ </element>
+ </optional>
+ <ref name="capccwaddress"/>
+ <optional>
+ <element name="members">
+ <oneOrMore>
+ <element name="ccw_device">
+ <attribute name="ref">
+ <data type="string"/>
+ </attribute>
+ <text/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ <element name="capability">
+ <choice>
+ <ref name="capccwgrouptypeqeth"/>
+ </choice>
+ </element>
+ </define>
+
+ <define name="capccwgroupmember">
+ <optional>
+ <element name="capability">
+ <attribute name="type">
+ <value>ccwgroup_member</value>
+ </attribute>
+ <element name="group_device"><text/></element>
+ </element>
+ </optional>
+ </define>
+
<define name="capccwdev">
<attribute name="type">
<value>ccw</value>
@@ -682,6 +740,7 @@
</element>
</optional>
<ref name="capccwaddress"/>
+ <ref name="capccwgroupmember"/>
</define>
<define name="capcssdev">
diff --git a/src/main/resources/libvirt/rng/sysinfo.rng b/src/main/resources/libvirt/rng/sysinfo.rng
new file mode 100644
index 0000000..01d305b
--- /dev/null
+++ b/src/main/resources/libvirt/rng/sysinfo.rng
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <element name="sysinfo">
+ <choice>
+ <group>
+ <attribute name="type">
+ <value>smbios</value>
+ </attribute>
+ <interleave>
+ <ref name="sysinfo-smbios-group-bios"/>
+ <ref name="sysinfo-smbios-group-system"/>
+ <ref name="sysinfo-smbios-group-baseboard"/>
+ <ref name="sysinfo-smbios-group-processor"/>
+ <ref name="sysinfo-smbios-group-memory"/>
+ <ref name="sysinfo-smbios-group-chassis"/>
+ <ref name="sysinfo-smbios-group-oemstrings"/>
+ </interleave>
+ </group>
+ <group>
+ <attribute name="type">
+ <value>fwcfg</value>
+ </attribute>
+ <zeroOrMore>
+ <ref name="sysinfo-fwcfg-entry"/>
+ </zeroOrMore>
+ </group>
+ </choice>
+ </element>
+ </start>
+
+ <include href="sysinfocommon.rng"/>
+
+</grammar>
diff --git a/src/main/resources/libvirt/rng/sysinfocommon.rng b/src/main/resources/libvirt/rng/sysinfocommon.rng
new file mode 100644
index 0000000..41296ea
--- /dev/null
+++ b/src/main/resources/libvirt/rng/sysinfocommon.rng
@@ -0,0 +1,204 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+ <!-- This schema is not designed for standalone use -->
+
+ <define name="sysinfo-smbios-group-bios">
+ <optional>
+ <element name="bios">
+ <oneOrMore>
+ <element name="entry">
+ <attribute name="name">
+ <ref name="sysinfo-bios-name"/>
+ </attribute>
+ <ref name="sysinfo-value"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ </define>
+
+ <define name="sysinfo-smbios-group-system">
+ <optional>
+ <element name="system">
+ <oneOrMore>
+ <element name="entry">
+ <attribute name="name">
+ <ref name="sysinfo-system-name"/>
+ </attribute>
+ <ref name="sysinfo-value"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ </define>
+
+ <define name="sysinfo-smbios-group-baseboard">
+ <zeroOrMore>
+ <element name="baseBoard">
+ <oneOrMore>
+ <element name="entry">
+ <attribute name="name">
+ <ref name="sysinfo-baseBoard-name"/>
+ </attribute>
+ <ref name="sysinfo-value"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </zeroOrMore>
+ </define>
+
+ <define name="sysinfo-smbios-group-chassis">
+ <optional>
+ <element name="chassis">
+ <oneOrMore>
+ <element name="entry">
+ <attribute name="name">
+ <ref name="sysinfo-chassis-name"/>
+ </attribute>
+ <ref name="sysinfo-value"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ </define>
+
+ <define name="sysinfo-smbios-group-processor">
+ <zeroOrMore>
+ <element name="processor">
+ <oneOrMore>
+ <element name="entry">
+ <attribute name="name">
+ <ref name="sysinfo-processor-name"/>
+ </attribute>
+ <ref name="sysinfo-value"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </zeroOrMore>
+ </define>
+
+ <define name="sysinfo-smbios-group-memory">
+ <zeroOrMore>
+ <element name="memory_device">
+ <oneOrMore>
+ <element name="entry">
+ <attribute name="name">
+ <ref name="sysinfo-memory-name"/>
+ </attribute>
+ <ref name="sysinfo-value"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </zeroOrMore>
+ </define>
+
+ <define name="sysinfo-smbios-group-oemstrings">
+ <optional>
+ <element name="oemStrings">
+ <oneOrMore>
+ <element name="entry">
+ <ref name="sysinfo-value"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ </define>
+
+ <define name="sysinfo-fwcfg-entry">
+ <element name="entry">
+ <attribute name="name">
+ <data type="string"/>
+ </attribute>
+ <choice>
+ <group>
+ <attribute name="file">
+ <data type="string"/>
+ </attribute>
+ <empty/>
+ </group>
+ <group>
+ <ref name="sysinfo-value"/>
+ </group>
+ </choice>
+ </element>
+ </define>
+
+ <define name="sysinfo-bios-name">
+ <choice>
+ <value>vendor</value>
+ <value>version</value>
+ <value>date</value>
+ <value>release</value>
+ </choice>
+ </define>
+
+ <define name="sysinfo-system-name">
+ <choice>
+ <value>manufacturer</value>
+ <value>product</value>
+ <value>version</value>
+ <value>serial</value>
+ <value>uuid</value>
+ <value>sku</value>
+ <value>family</value>
+ </choice>
+ </define>
+
+ <define name="sysinfo-baseBoard-name">
+ <choice>
+ <value>manufacturer</value>
+ <value>product</value>
+ <value>version</value>
+ <value>serial</value>
+ <value>asset</value>
+ <value>location</value>
+ </choice>
+ </define>
+
+ <define name="sysinfo-chassis-name">
+ <choice>
+ <value>manufacturer</value>
+ <value>version</value>
+ <value>serial</value>
+ <value>asset</value>
+ <value>sku</value>
+ </choice>
+ </define>
+
+ <define name="sysinfo-processor-name">
+ <choice>
+ <value>socket_destination</value>
+ <value>type</value>
+ <value>family</value>
+ <value>manufacturer</value>
+ <value>signature</value>
+ <value>version</value>
+ <value>external_clock</value>
+ <value>max_speed</value>
+ <value>status</value>
+ <value>serial_number</value>
+ <value>part_number</value>
+ </choice>
+ </define>
+
+ <define name="sysinfo-memory-name">
+ <choice>
+ <value>size</value>
+ <value>form_factor</value>
+ <value>locator</value>
+ <value>bank_locator</value>
+ <value>type</value>
+ <value>type_detail</value>
+ <value>speed</value>
+ <value>manufacturer</value>
+ <value>serial_number</value>
+ <value>part_number</value>
+ </choice>
+ </define>
+
+ <define name="sysinfo-value">
+ <data type="string"/>
+ </define>
+
+</grammar>