<?xml version="1.0"?> <!-- CPU-related definitions used in multiple grammars --> <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <define name="cpuMode"> <attribute name="mode"> <choice> <value>custom</value> <value>host-model</value> <value>host-passthrough</value> </choice> </attribute> </define> <define name="cpuMatch"> <attribute name="match"> <choice> <value>minimum</value> <value>exact</value> <value>strict</value> </choice> </attribute> </define> <define name="cpuCheck"> <attribute name="check"> <choice> <value>none</value> <value>partial</value> <value>full</value> </choice> </attribute> </define> <define name="cpuModel"> <element name="model"> <optional> <attribute name="fallback"> <choice> <value>allow</value> <value>forbid</value> </choice> </attribute> </optional> <optional> <attribute name="vendor_id"> <data type="string"> <param name='pattern'>[^,]{12}</param> </data> </attribute> </optional> <choice> <text/> <empty/> </choice> </element> </define> <define name="cpuVendor"> <element name="vendor"> <text/> </element> </define> <define name="cpuFeature"> <element name="feature"> <attribute name="policy"> <choice> <value>force</value> <value>require</value> <value>optional</value> <value>disable</value> <value>forbid</value> </choice> </attribute> <attribute name="name"> <ref name="featureName"/> </attribute> <empty/> </element> </define> <define name="cpuTopology"> <element name="topology"> <attribute name="sockets"> <ref name="positiveInteger"/> </attribute> <attribute name="cores"> <ref name="positiveInteger"/> </attribute> <attribute name="threads"> <ref name="positiveInteger"/> </attribute> </element> </define> <define name="cpuNuma"> <element name="numa"> <oneOrMore> <ref name="numaCell"/> </oneOrMore> </element> </define> <define name="numaCell"> <element name="cell"> <optional> <attribute name="id"> <ref name="unsignedInt"/> </attribute> </optional> <attribute name="cpus"> <ref name="cpuset"/> </attribute> <attribute name="memory"> <ref name="memoryKB"/> </attribute> <optional> <attribute name="unit"> <ref name="unit"/> </attribute> </optional> <optional> <attribute name="memAccess"> <choice> <value>shared</value> <value>private</value> </choice> </attribute> </optional> </element> </define> <!-- Memory as an attribute is in KiB, no way to express a unit --> <define name="memoryKB"> <data type="unsignedLong"/> </define> <define name="featureName"> <data type="string"> <param name='pattern'>[a-zA-Z0-9\-_\.]+</param> </data> </define> <define name="cpuCache"> <element name="cache"> <optional> <attribute name="level"> <choice> <value>1</value> <value>2</value> <value>3</value> </choice> </attribute> </optional> <attribute name="mode"> <choice> <value>emulate</value> <value>passthrough</value> <value>disable</value> </choice> </attribute> </element> </define> </grammar>