mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-09-09 09:14:57 +00:00
Signed-off-by: Martin Kletzander <mkletzan@redhat.com> Reviewed-by: Andrea Bolognani <abologna@redhat.com>
528 lines
12 KiB
XML
528 lines
12 KiB
XML
<?xml version="1.0"?>
|
|
<!-- A Relax NG schema for the libvirt capabilities XML format -->
|
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<include href="basictypes.rng"/>
|
|
<include href="cputypes.rng"/>
|
|
<start>
|
|
<ref name="capabilities"/>
|
|
</start>
|
|
|
|
|
|
<define name="capabilities">
|
|
<element name="capabilities">
|
|
<ref name="hostcaps"/>
|
|
|
|
<zeroOrMore>
|
|
<ref name="guestcaps"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="hostcaps">
|
|
<element name="host">
|
|
<optional>
|
|
<element name="uuid">
|
|
<ref name="UUID"/>
|
|
</element>
|
|
</optional>
|
|
<ref name="hostcpu"/>
|
|
<optional>
|
|
<ref name="power_management"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="iommu_support"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="migration"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="topology"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="cache"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="memory_bandwidth"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="secmodel"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="secmodel">
|
|
<element name="secmodel">
|
|
<interleave>
|
|
<element name="model">
|
|
<text/>
|
|
</element>
|
|
<element name="doi">
|
|
<text/>
|
|
</element>
|
|
<zeroOrMore>
|
|
<element name="baselabel">
|
|
<attribute name="type">
|
|
<text/>
|
|
</attribute>
|
|
<text/>
|
|
</element>
|
|
</zeroOrMore>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="power_management">
|
|
<element name="power_management">
|
|
<interleave>
|
|
<optional>
|
|
<element name="suspend_mem">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="suspend_disk">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="suspend_hybrid">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="iommu_support">
|
|
<element name="iommu">
|
|
<optional>
|
|
<attribute name="support">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="migration">
|
|
<element name="migration_features">
|
|
<optional>
|
|
<element name="live">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="uri_transports">
|
|
<oneOrMore>
|
|
<element name="uri_transport">
|
|
<choice>
|
|
<value>vpxmigr</value>
|
|
<value>tcp</value>
|
|
<value>rdma</value>
|
|
<value>vzmigr</value>
|
|
</choice>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="topology">
|
|
<element name="topology">
|
|
<element name="cells">
|
|
<attribute name="num">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<oneOrMore>
|
|
<ref name="cell"/>
|
|
</oneOrMore>
|
|
</element>
|
|
<optional>
|
|
<ref name="numaInterconnects"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cell">
|
|
<element name="cell">
|
|
<attribute name="id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
|
|
<optional>
|
|
<ref name="memory"/>
|
|
</optional>
|
|
|
|
<zeroOrMore>
|
|
<ref name="pagesNuma"/>
|
|
</zeroOrMore>
|
|
|
|
<optional>
|
|
<element name="distances">
|
|
<oneOrMore>
|
|
<ref name="numaDistance"/>
|
|
</oneOrMore>
|
|
</element>
|
|
</optional>
|
|
|
|
<zeroOrMore>
|
|
<ref name="numaCache"/>
|
|
</zeroOrMore>
|
|
|
|
<optional>
|
|
<element name="cpus">
|
|
<attribute name="num">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<zeroOrMore>
|
|
<ref name="cpu"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="memory">
|
|
<element name="memory">
|
|
<ref name="scaledInteger"/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cpu">
|
|
<element name="cpu">
|
|
<attribute name="id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="socket_id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="die_id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="core_id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="siblings">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cache">
|
|
<element name="cache">
|
|
<oneOrMore>
|
|
<element name="bank">
|
|
<attribute name="id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="level">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<ref name="cacheType"/>
|
|
<attribute name="size">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="unit">
|
|
<ref name="unit"/>
|
|
</attribute>
|
|
<attribute name="cpus">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
<zeroOrMore>
|
|
<element name="control">
|
|
<attribute name="granularity">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="min">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="unit">
|
|
<ref name="unit"/>
|
|
</attribute>
|
|
<ref name="cacheType"/>
|
|
<attribute name="maxAllocs">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</oneOrMore>
|
|
<optional>
|
|
<ref name="cpuMonitor"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cacheType">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>both</value>
|
|
<value>code</value>
|
|
<value>data</value>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="memory_bandwidth">
|
|
<element name="memory_bandwidth">
|
|
<oneOrMore>
|
|
<element name="node">
|
|
<attribute name="id">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="cpus">
|
|
<ref name="cpuset"/>
|
|
</attribute>
|
|
<zeroOrMore>
|
|
<element name="control">
|
|
<attribute name="granularity">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="min">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="maxAllocs">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</oneOrMore>
|
|
<optional>
|
|
<ref name="cpuMonitor"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="cpuMonitor">
|
|
<element name="monitor">
|
|
<optional>
|
|
<attribute name="level">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<attribute name="reuseThreshold">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="maxMonitors">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
<oneOrMore>
|
|
<element name="feature">
|
|
<attribute name="name">
|
|
<ref name="monitorFeature"/>
|
|
</attribute>
|
|
</element>
|
|
</oneOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="monitorFeature">
|
|
<data type="string">
|
|
<param name="pattern">(llc_|mbm_)[a-zA-Z0-9\-_]+</param>
|
|
</data>
|
|
</define>
|
|
|
|
<define name="guestcaps">
|
|
<element name="guest">
|
|
<ref name="ostype"/>
|
|
<ref name="arch"/>
|
|
<optional>
|
|
<ref name="features"/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="ostype">
|
|
<element name="os_type">
|
|
<choice>
|
|
<value>xen</value> <!-- Xen 3.0 pv -->
|
|
<value>linux</value> <!-- same as "xen" - meant to be legacy -->
|
|
<value>hvm</value> <!-- unmodified OS -->
|
|
<value>exe</value> <!-- For container based virt -->
|
|
<value>uml</value> <!-- user mode linux; NOT USED ANYMORE -->
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="arch">
|
|
<element name="arch">
|
|
<attribute name="name">
|
|
<ref name="archnames"/>
|
|
</attribute>
|
|
<ref name="wordsize"/>
|
|
<optional>
|
|
<ref name="emulator"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="loader"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="machine"/>
|
|
</zeroOrMore>
|
|
<oneOrMore>
|
|
<ref name="domain"/>
|
|
</oneOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="emulator">
|
|
<element name="emulator">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="loader">
|
|
<element name="loader">
|
|
<ref name="absFilePath"/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="wordsize">
|
|
<element name="wordsize">
|
|
<choice>
|
|
<value>31</value>
|
|
<value>32</value>
|
|
<value>64</value>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="machine">
|
|
<element name="machine">
|
|
<optional>
|
|
<attribute name="canonical">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="maxCpus">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="deprecated">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="domain">
|
|
<element name="domain">
|
|
<attribute name="type">
|
|
<choice>
|
|
<value>qemu</value>
|
|
<value>kqemu</value>
|
|
<value>kvm</value>
|
|
<value>xen</value>
|
|
<value>uml</value> <!-- NOT USED ANYMORE -->
|
|
<value>lxc</value>
|
|
<value>openvz</value>
|
|
<value>test</value>
|
|
</choice>
|
|
</attribute>
|
|
|
|
<optional>
|
|
<ref name="emulator"/>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<ref name="machine"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="features">
|
|
<element name="features">
|
|
<interleave>
|
|
<optional>
|
|
<element name="pae">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="nonpae">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="ia64_be">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="acpi">
|
|
<ref name="featuretoggle"/>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="apic">
|
|
<ref name="featuretoggle"/>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="cpuselection">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="deviceboot">
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="disksnapshot">
|
|
<ref name="featuretoggle"/>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name="hap">
|
|
<ref name="featuretoggle"/>
|
|
<empty/>
|
|
</element>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
|
|
<define name="featuretoggle">
|
|
<attribute name="toggle">
|
|
<ref name="virYesNo"/>
|
|
</attribute>
|
|
<attribute name="default">
|
|
<ref name="virOnOff"/>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name="pagesNuma">
|
|
<element name="pages">
|
|
<ref name="pagesElem"/>
|
|
<ref name="unsignedInt"/>
|
|
</element>
|
|
</define>
|
|
<define name="pagesElem">
|
|
<optional>
|
|
<attribute name="unit">
|
|
<ref name="unit"/>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="size">
|
|
<ref name="unsignedInt"/>
|
|
</attribute>
|
|
</define>
|
|
</grammar>
|