2013-01-23 23:03:17 +08:00
<?xml version="1.0"?>
2009-08-05 11:56:56 +02:00
<!-- A Relax NG schema for the libvirt capabilities XML format -->
2009-01-27 15:29:53 +00:00
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2020-09-30 13:54:58 +02:00
<include href="basictypes.rng"/>
2020-09-30 13:54:59 +02:00
<include href="cputypes.rng"/>
2009-01-27 15:29:53 +00:00
<start>
2020-09-30 13:54:58 +02:00
<ref name="capabilities"/>
2009-01-27 15:29:53 +00:00
</start>
2020-09-30 13:54:58 +02:00
<define name="capabilities">
<element name="capabilities">
<ref name="hostcaps"/>
2009-01-27 15:29:53 +00:00
<zeroOrMore>
2020-09-30 13:54:58 +02:00
<ref name="guestcaps"/>
2009-01-27 15:29:53 +00:00
</zeroOrMore>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="hostcaps">
<element name="host">
2010-05-25 15:33:51 +01:00
<optional>
2020-09-30 13:54:58 +02:00
<element name="uuid">
<ref name="UUID"/>
2010-05-25 15:33:51 +01:00
</element>
</optional>
2020-09-30 13:54:59 +02:00
<ref name="hostcpu"/>
2011-11-22 11:31:22 +08:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="power_management"/>
2011-11-22 11:31:22 +08:00
</optional>
2018-06-01 10:15:59 +02:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="iommu_support"/>
2018-06-01 10:15:59 +02:00
</optional>
2009-01-27 15:29:53 +00:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="migration"/>
2009-01-27 15:29:53 +00:00
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<ref name="topology"/>
2009-01-27 15:29:53 +00:00
</optional>
2017-03-30 15:01:27 +02:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="cache"/>
2017-03-30 15:01:27 +02:00
</optional>
2018-07-30 11:12:41 +08:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="memory_bandwidth"/>
2018-07-30 11:12:41 +08:00
</optional>
2012-08-15 19:10:36 -03:00
<zeroOrMore>
2020-09-30 13:54:58 +02:00
<ref name="secmodel"/>
2012-08-15 19:10:36 -03:00
</zeroOrMore>
2009-03-03 09:44:41 +00:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="secmodel">
<element name="secmodel">
2012-08-15 19:10:36 -03:00
<interleave>
2020-09-30 13:54:58 +02:00
<element name="model">
2017-09-07 12:16:04 +02:00
<text/>
</element>
2020-09-30 13:54:58 +02:00
<element name="doi">
2017-09-07 12:16:04 +02:00
<text/>
</element>
<zeroOrMore>
2020-09-30 13:54:58 +02:00
<element name="baselabel">
<attribute name="type">
2017-09-07 12:16:04 +02:00
<text/>
</attribute>
2012-08-15 19:10:36 -03:00
<text/>
</element>
2017-09-07 12:16:04 +02:00
</zeroOrMore>
</interleave>
2009-01-27 15:29:53 +00:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="power_management">
<element name="power_management">
2011-11-22 11:31:22 +08:00
<interleave>
<optional>
2020-09-30 13:54:58 +02:00
<element name="suspend_mem">
2011-11-22 11:31:22 +08:00
<empty/>
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="suspend_disk">
2011-11-22 11:31:22 +08:00
<empty/>
</element>
</optional>
2011-11-29 14:56:10 +08:00
<optional>
2020-09-30 13:54:58 +02:00
<element name="suspend_hybrid">
2011-11-29 14:56:10 +08:00
<empty/>
</element>
</optional>
2011-11-22 11:31:22 +08:00
</interleave>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="iommu_support">
<element name="iommu">
2018-06-01 10:15:59 +02:00
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="support">
<ref name="virYesNo"/>
2018-06-01 10:15:59 +02:00
</attribute>
</optional>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="migration">
<element name="migration_features">
2009-01-27 15:29:53 +00:00
<optional>
2020-09-30 13:54:58 +02:00
<element name="live">
2010-03-01 20:09:26 +01:00
<empty/>
</element>
2009-01-27 15:29:53 +00:00
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="uri_transports">
2010-03-01 20:09:26 +01:00
<oneOrMore>
2020-09-30 13:54:58 +02:00
<element name="uri_transport">
2010-03-01 20:09:26 +01:00
<choice>
2018-05-18 17:47:08 -04:00
<value>vpxmigr</value>
2010-03-01 20:09:26 +01:00
<value>tcp</value>
2018-05-18 18:00:23 -04:00
<value>rdma</value>
2018-05-18 18:25:54 -04:00
<value>vzmigr</value>
2010-03-01 20:09:26 +01:00
</choice>
</element>
</oneOrMore>
</element>
2009-01-27 15:29:53 +00:00
</optional>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="topology">
<element name="topology">
<element name="cells">
<attribute name="num">
<ref name="unsignedInt"/>
2010-03-01 20:09:26 +01:00
</attribute>
<oneOrMore>
2020-09-30 13:54:58 +02:00
<ref name="cell"/>
2010-03-01 20:09:26 +01:00
</oneOrMore>
2009-01-27 15:29:53 +00:00
</element>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="cell">
<element name="cell">
<attribute name="id">
<ref name="unsignedInt"/>
2009-01-27 15:29:53 +00:00
</attribute>
2013-03-07 11:03:36 -05:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="memory"/>
2013-03-07 11:03:36 -05:00
</optional>
2014-06-06 18:12:51 +02:00
<zeroOrMore>
2020-09-30 13:54:58 +02:00
<ref name="pagesNuma"/>
2014-06-06 18:12:51 +02:00
</zeroOrMore>
2014-06-03 15:18:27 +02:00
<optional>
2020-09-30 13:54:58 +02:00
<element name="distances">
2014-06-03 15:18:27 +02:00
<zeroOrMore>
2020-09-30 13:54:58 +02:00
<element name="sibling">
<attribute name="id">
<ref name="unsignedInt"/>
2014-06-03 15:18:27 +02:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="value">
<ref name="unsignedInt"/>
2014-06-03 15:18:27 +02:00
</attribute>
</element>
</zeroOrMore>
</element>
</optional>
2009-01-27 15:29:53 +00:00
<optional>
2020-09-30 13:54:58 +02:00
<element name="cpus">
<attribute name="num">
<ref name="unsignedInt"/>
2010-03-01 20:09:26 +01:00
</attribute>
<oneOrMore>
2020-09-30 13:54:58 +02:00
<ref name="cpu"/>
2010-03-01 20:09:26 +01:00
</oneOrMore>
</element>
2009-01-27 15:29:53 +00:00
</optional>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="memory">
<element name="memory">
<ref name="scaledInteger"/>
2013-03-07 11:03:36 -05:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="cpu">
<element name="cpu">
<attribute name="id">
<ref name="unsignedInt"/>
2009-01-27 15:29:53 +00:00
</attribute>
2013-01-18 19:30:00 +01:00
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="socket_id">
<ref name="unsignedInt"/>
2013-01-18 19:30:00 +01:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="die_id">
<ref name="unsignedInt"/>
2019-12-16 18:10:29 +00:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="core_id">
<ref name="unsignedInt"/>
2013-01-18 19:30:00 +01:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="siblings">
<ref name="cpuset"/>
2013-01-18 19:30:00 +01:00
</attribute>
</optional>
2009-01-27 15:29:53 +00:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="cache">
<element name="cache">
2017-03-30 15:01:27 +02:00
<oneOrMore>
2020-09-30 13:54:58 +02:00
<element name="bank">
<attribute name="id">
<ref name="unsignedInt"/>
2017-03-30 15:01:27 +02:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="level">
<ref name="unsignedInt"/>
2017-03-30 15:01:27 +02:00
</attribute>
2020-09-30 13:54:58 +02:00
<ref name="cacheType"/>
<attribute name="size">
<ref name="unsignedInt"/>
2017-03-30 15:01:27 +02:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="unit">
<ref name="unit"/>
2017-03-30 15:01:27 +02:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="cpus">
<ref name="cpuset"/>
2017-03-30 15:01:27 +02:00
</attribute>
2017-05-17 17:08:33 +08:00
<zeroOrMore>
2020-09-30 13:54:58 +02:00
<element name="control">
<attribute name="granularity">
<ref name="unsignedInt"/>
2017-05-17 17:08:33 +08:00
</attribute>
2017-06-05 14:00:45 +02:00
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="min">
<ref name="unsignedInt"/>
2017-06-05 14:00:45 +02:00
</attribute>
</optional>
2020-09-30 13:54:58 +02:00
<attribute name="unit">
<ref name="unit"/>
2017-05-17 17:08:33 +08:00
</attribute>
2020-09-30 13:54:58 +02:00
<ref name="cacheType"/>
<attribute name="maxAllocs">
<ref name="unsignedInt"/>
2017-05-17 17:08:33 +08:00
</attribute>
</element>
</zeroOrMore>
2017-03-30 15:01:27 +02:00
</element>
</oneOrMore>
2018-09-20 18:10:50 +08:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="cpuMonitor"/>
2018-09-20 18:10:50 +08:00
</optional>
2017-03-30 15:01:27 +02:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="cacheType">
<attribute name="type">
2017-05-17 17:08:33 +08:00
<choice>
<value>both</value>
<value>code</value>
<value>data</value>
</choice>
</attribute>
</define>
2020-09-30 13:54:58 +02:00
<define name="memory_bandwidth">
<element name="memory_bandwidth">
2018-07-30 11:12:41 +08:00
<oneOrMore>
2020-09-30 13:54:58 +02:00
<element name="node">
<attribute name="id">
<ref name="unsignedInt"/>
2018-07-30 11:12:41 +08:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="cpus">
<ref name="cpuset"/>
2018-07-30 11:12:41 +08:00
</attribute>
<zeroOrMore>
2020-09-30 13:54:58 +02:00
<element name="control">
<attribute name="granularity">
<ref name="unsignedInt"/>
2018-07-30 11:12:41 +08:00
</attribute>
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="min">
<ref name="unsignedInt"/>
2018-09-20 18:10:50 +08:00
</attribute>
2018-07-30 11:12:41 +08:00
</optional>
2020-09-30 13:54:58 +02:00
<attribute name="maxAllocs">
<ref name="unsignedInt"/>
2018-07-30 11:12:41 +08:00
</attribute>
</element>
</zeroOrMore>
</element>
</oneOrMore>
2018-09-20 18:10:50 +08:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="cpuMonitor"/>
2018-09-20 18:10:50 +08:00
</optional>
2018-07-30 11:12:41 +08:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="cpuMonitor">
<element name="monitor">
2018-09-20 18:10:50 +08:00
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="level">
<ref name="unsignedInt"/>
2018-09-20 18:10:50 +08:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="reuseThreshold">
<ref name="unsignedInt"/>
2018-09-20 18:10:50 +08:00
</attribute>
</optional>
2020-09-30 13:54:58 +02:00
<attribute name="maxMonitors">
<ref name="unsignedInt"/>
2018-09-20 18:10:50 +08:00
</attribute>
<oneOrMore>
2020-09-30 13:54:58 +02:00
<element name="feature">
<attribute name="name">
<ref name="monitorFeature"/>
2018-09-20 18:10:50 +08:00
</attribute>
</element>
</oneOrMore>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="monitorFeature">
<data type="string">
<param name="pattern">(llc_|mbm_)[a-zA-Z0-9\-_]+</param>
2018-09-20 18:10:50 +08:00
</data>
</define>
2020-09-30 13:54:58 +02:00
<define name="guestcaps">
<element name="guest">
<ref name="ostype"/>
<ref name="arch"/>
2009-01-27 15:29:53 +00:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="features"/>
2009-01-27 15:29:53 +00:00
</optional>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="ostype">
<element name="os_type">
2009-01-27 15:29:53 +00:00
<choice>
2010-03-01 20:09:26 +01:00
<value>xen</value> <!-- Xen 3.0 pv -->
2020-09-30 13:54:58 +02:00
<value>linux</value> <!-- same as "xen" - meant to be legacy -->
2010-03-01 20:09:26 +01:00
<value>hvm</value> <!-- unmodified OS -->
<value>exe</value> <!-- For container based virt -->
2018-12-14 14:45:07 +01:00
<value>uml</value> <!-- user mode linux; NOT USED ANYMORE -->
2009-01-27 15:29:53 +00:00
</choice>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="arch">
<element name="arch">
<attribute name="name">
<ref name="archnames"/>
2009-01-27 15:29:53 +00:00
</attribute>
2020-09-30 13:54:58 +02:00
<ref name="wordsize"/>
2009-01-27 15:29:53 +00:00
<optional>
2020-09-30 13:54:58 +02:00
<ref name="emulator"/>
2009-01-27 15:29:53 +00:00
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<ref name="loader"/>
2009-01-27 15:29:53 +00:00
</optional>
<zeroOrMore>
2020-09-30 13:54:58 +02:00
<ref name="machine"/>
2009-01-27 15:29:53 +00:00
</zeroOrMore>
<oneOrMore>
2020-09-30 13:54:58 +02:00
<ref name="domain"/>
2009-01-27 15:29:53 +00:00
</oneOrMore>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="emulator">
<element name="emulator">
<ref name="absFilePath"/>
2009-01-27 15:29:53 +00:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="loader">
<element name="loader">
<ref name="absFilePath"/>
2009-01-27 15:29:53 +00:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="wordsize">
<element name="wordsize">
2009-01-27 15:29:53 +00:00
<choice>
2010-03-01 20:09:26 +01:00
<value>31</value>
<value>32</value>
<value>64</value>
2009-01-27 15:29:53 +00:00
</choice>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="machine">
<element name="machine">
2009-07-23 18:31:35 +01:00
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="canonical">
2009-07-23 18:31:35 +01:00
<text/>
</attribute>
</optional>
2013-06-26 17:46:35 +02:00
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="maxCpus">
<ref name="unsignedInt"/>
2013-06-26 17:46:35 +02:00
</attribute>
</optional>
2009-01-27 15:29:53 +00:00
<text/>
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="domain">
<element name="domain">
<attribute name="type">
2010-03-01 20:09:26 +01:00
<choice>
<value>qemu</value>
<value>kqemu</value>
<value>kvm</value>
<value>xen</value>
2018-12-14 14:45:07 +01:00
<value>uml</value> <!-- NOT USED ANYMORE -->
2010-03-01 20:09:26 +01:00
<value>lxc</value>
<value>openvz</value>
<value>test</value>
</choice>
2009-01-27 15:29:53 +00:00
</attribute>
<optional>
2020-09-30 13:54:58 +02:00
<ref name="emulator"/>
2009-01-27 15:29:53 +00:00
</optional>
2009-09-10 09:47:57 +01:00
<zeroOrMore>
2020-09-30 13:54:58 +02:00
<ref name="machine"/>
2009-09-10 09:47:57 +01:00
</zeroOrMore>
2009-01-27 15:29:53 +00:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="features">
<element name="features">
2012-08-02 13:23:16 +02:00
<interleave>
<optional>
2020-09-30 13:54:58 +02:00
<element name="pae">
2012-08-02 13:23:16 +02:00
<empty/>
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="nonpae">
2012-08-02 13:23:16 +02:00
<empty/>
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="ia64_be">
2012-08-02 13:23:16 +02:00
<empty/>
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="acpi">
<ref name="featuretoggle"/>
2012-08-02 13:23:16 +02:00
<empty/>
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="apic">
<ref name="featuretoggle"/>
2012-08-02 13:23:16 +02:00
<empty/>
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="cpuselection">
2012-08-02 13:23:16 +02:00
<empty/>
</element>
</optional>
<optional>
2020-09-30 13:54:58 +02:00
<element name="deviceboot">
2012-08-02 13:23:16 +02:00
<empty/>
</element>
</optional>
2014-03-17 16:19:44 +01:00
<optional>
2020-09-30 13:54:58 +02:00
<element name="disksnapshot">
<ref name="featuretoggle"/>
2014-03-17 16:19:44 +01:00
<empty/>
</element>
</optional>
2019-11-12 14:00:53 +01:00
<optional>
2020-09-30 13:54:58 +02:00
<element name="hap">
<ref name="featuretoggle"/>
2019-11-12 14:00:53 +01:00
<empty/>
</element>
</optional>
2012-08-02 13:23:16 +02:00
</interleave>
2009-01-27 15:29:53 +00:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="featuretoggle">
<attribute name="toggle">
2014-09-08 08:06:35 +02:00
<ref name="virYesNo"/>
2009-01-27 15:29:53 +00:00
</attribute>
2020-09-30 13:54:58 +02:00
<attribute name="default">
2014-09-08 08:06:35 +02:00
<ref name="virOnOff"/>
2009-01-27 15:29:53 +00:00
</attribute>
</define>
2020-09-30 13:54:58 +02:00
<define name="pagesNuma">
<element name="pages">
<ref name="pagesElem"/>
<ref name="unsignedInt"/>
2014-06-06 18:12:51 +02:00
</element>
</define>
2020-09-30 13:54:58 +02:00
<define name="pagesElem">
2018-05-19 07:02:47 -04:00
<optional>
2020-09-30 13:54:58 +02:00
<attribute name="unit">
<ref name="unit"/>
2018-05-19 07:02:47 -04:00
</attribute>
</optional>
2020-09-30 13:54:58 +02:00
<attribute name="size">
<ref name="unsignedInt"/>
2018-05-19 07:02:47 -04:00
</attribute>
</define>
2009-01-27 15:29:53 +00:00
</grammar>