acrn-hypervisor/misc/config_tools/schema/config.xsd
Junjie Mao 0d84ecc4a1 config_tools: merge data in launch XMLs into scenario XMLs
Splitting the definitions of a post-launched VM into two files, namely the
scenario XML and launch XML, introduces duplicated field in both files and
leads to a high probability of having inconsistencies between them (see
issue #7156 as an example). Further more, this split has also adds much
complexity to the configurator which has to either hide some of the items
from user interfaces or synchronize different fields upon changes.

The advantage of the split, however, is not widely adopted. Having a
separate XML capturing the VM definition tweakable in the service VM at
runtime seems to give users more flexibility to redefine a VM without
recompiling the hypervisor. But that is not a common practice in the
industry segment; instead it is preferred to have a static scenario
definition to make sure that all resources are allocated carefully in a
fixed manner in order for better determinism.

As a result, this patch merges the fields in launch XMLs into the schema of
scenario XMLs. Some fields are post-launched VM specific and thus added,
while the others have similar items in scenario XMLs today.

The launch script generator is also updated accordingly to generate launch
scripts from the new scenario XMLs (which now contain the same amount of
information as previous launch XMLs).

Tracked-On: #6690
Signed-off-by: Junjie Mao <junjie.mao@intel.com>
2022-03-15 10:22:37 +08:00

509 lines
26 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0"?>
<xs:schema
xmlns:xi="http://www.w3.org/2003/XInclude"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:acrn="https://projectacrn.org">
<xi:include href="types.xsd" xpointer="xpointer(id('root')/*)" />
<xi:include href="VMtypes.xsd" xpointer="xpointer(id('root')/*)" />
<xs:complexType name="DebugOptionsType">
<xs:annotation>
<xs:documentation>Options for debugging the hypervisor.</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="BUILD_TYPE" type="BuildType" default="debug">
<xs:annotation acrn:title="Build type" acrn:views="basic">
<xs:documentation>Identify build type. Debug mode enables debug shell, prints, and logs. Release mode optimizes the ACRN binary for deployment and turns off all debug infrastructure. These can only be changed at build time.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SERIAL_CONSOLE" type="SerialConsoleOptions">
<xs:annotation acrn:title="Serial console port" acrn:views="basic">
<xs:documentation>Specify the host serial device used for hypervisor debugging.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MEM_LOGLEVEL" type="LogLevelType" default="0">
<xs:annotation acrn:title="ACRN log level" acrn:views="basic">
<xs:documentation>Specify default log level for log messages stored in memory. Value can be changed at runtime. Log messages with the selected value or lower are displayed.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="NPK_LOGLEVEL" type="LogLevelType" default="0">
<xs:annotation acrn:title="Intel Trace Hub log level" acrn:views="basic">
<xs:documentation>Specify default log level for the hypervisor via Intel Trace Hub log. Use the Intel Trace Hub's memory to record log messages. Value can be changed at runtime. Log messages with the selected value or lower are displayed.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CONSOLE_LOGLEVEL" type="LogLevelType" default="0">
<xs:annotation acrn:title="Serial console log level" acrn:views="basic">
<xs:documentation>Specify default log level for log messages written to the serial console. Log messages with the selected value or lower are displayed.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="FeatureOptionsType">
<xs:annotation>
<xs:documentation>Options for enabling hypervisor features.</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="RELOC" type="Boolean" default="y">
<xs:annotation acrn:title="Hypervisor relocation in memory" acrn:views="advanced">
<xs:documentation>Enable hypervisor relocation in memory. The boot loader may need to change the location of the hypervisor because of other firmware.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SCHEDULER" type="SchedulerType" default="SCHED_BVT">
<xs:annotation acrn:title="Scheduler and workload prioritization" acrn:views="advanced">
<xs:documentation>Choose scheduling algorithm used for determining which User VM runs on a shared virtual CPU.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MULTIBOOT2" type="Boolean" default="y">
<xs:annotation acrn:title="Enable Multiboot2" acrn:views="advanced">
<xs:documentation>Enable multiboot2 boot protocol support and multiboot1 downward compatibility. Disable this feature if multiboot1 meets your requirements and to reduce lines of code.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ENFORCE_TURNOFF_AC" type="Boolean" default="y">
<xs:annotation acrn:title="Split lock detection" acrn:views="advanced">
<xs:documentation>Enable split lock detection for real-time application. This prevents alignment check exceptions from impacting hypervisor real-time performance.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ENFORCE_TURNOFF_GP" type="Boolean" default="n">
<xs:annotation acrn:title="Prevent system bus locking" acrn:views="advanced">
<xs:documentation>Enable UC lock detection for real-time application. This prevents general protection faults from impacting hypervisor real-time performance.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SECURITY_VM_FIXUP" type="Boolean" default="n">
<xs:annotation acrn:views="">
<xs:documentation>Enable to do fixup for TPM2 and SMBIOS for Security VM. If no Security VM, setting this option to ``n``</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="KEEP_IRQ_DISABLED" type="Boolean" default="n">
<xs:annotation acrn:views="">
<xs:documentation>If ``y``, permanently disables all interrupts in HV root mode.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RDT" type="RDTType">
<xs:annotation acrn:title="Intel Resource Director Technology" acrn:views="advanced">
<xs:documentation>Enable Intel Resource Director Technology (RDT). The technology provides cache and memory allocation features to improve time performance of real-time VMs.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="HYPERV_ENABLED" type="Boolean" default="y">
<xs:annotation acrn:title="TLFS support for Windows" acrn:views="advanced">
<xs:documentation>Enable Microsoft(R) Hypervisor Top-Level Functional Specification for Windows hyper-v support.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IOMMU_ENFORCE_SNP" type="Boolean" default="n">
<xs:annotation acrn:views="">
<xs:documentation>Specify if the IOMMU enforces snoop behavior of DMA operations.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ACPI_PARSE_ENABLED" type="Boolean" default="y">
<xs:annotation acrn:title="Parse ACPI tables at runtime" acrn:views="advanced">
<xs:documentation>Enable ACPI runtime parsing to get DMAR (DMA remapping) configuration data from the APCI tables. Otherwise, use existing, static information from the associated board.xml file.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="L1D_VMENTRY_ENABLED" type="Boolean" default="y">
<xs:annotation acrn:title="Mitigate L1 terminal fault" acrn:views="advanced">
<xs:documentation>Enable L1 cache flush before VM entry,Determine the enabling of mitigation solution for L1 Terminal Fault (L1TF). The L1 data cache will be flushed before each VMENTRY.L1TF is a speculative execution side channel cache timing vulnerability. Each variety of L1TF could potentially allow unauthorized disclosure of information residing in the L1 data cache.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MCE_ON_PSC_DISABLED" type="Boolean" default="y">
<xs:annotation acrn:title="MCE workaround" acrn:views="advanced">
<xs:documentation>Enable software workaround for Machine Check Error on Page Size Change (silicon bug in some processor families).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IVSHMEM" type="IVSHMEMInfo">
<xs:annotation acrn:title="Inter-VM shared memory" acrn:views="basic">
<xs:documentation/>
</xs:annotation>
</xs:element>
<xs:element name="SSRAM" minOccurs="0" type="SSRAMInfo">
<xs:annotation acrn:title="Software SRAM (for real-time apps)" acrn:views="advanced">
<xs:documentation />
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="MemoryOptionsType">
<xs:all>
<xs:element name="STACK_SIZE" type="HexFormat" default="0x2000">
<xs:annotation acrn:title="Stack size (in byte)" acrn:views="advanced">
<xs:documentation>Capacity of one stack (in bytes) used by a physical core. Each core uses one stack for normal operation and another three for specific exceptions.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="HV_RAM_START" type="HexFormat" default="0x00400000">
<xs:annotation acrn:views="">
<xs:documentation>The 2MB-aligned starting physical address of the RAM region used by the hypervisor.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="CapacitiesOptionsType">
<xs:annotation>
<xs:documentation>Capacity limits for static assigned data structure or maximum supported resource.</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="MAX_VM_NUM" type="xs:integer" default="16">
<xs:annotation acrn:views="">
<xs:documentation>Maximum number of User VMs allowed.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IOMMU_BUS_NUM" type="HexFormat" default="0x100">
<xs:annotation acrn:views="">
<xs:documentation>Highest PCI bus ID used during IOMMU initialization.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MAX_IOAPIC_NUM" default="1">
<xs:annotation acrn:views="">
<xs:documentation>Maximum number of IOAPICs.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:annotation>
<xs:documentation>Integer from 1 to 10.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
<xs:maxInclusive value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="MAX_PCI_DEV_NUM" default="96">
<xs:annotation acrn:title="Maximum number of PCI devices" acrn:views="advanced">
<xs:documentation>Specify the static memory allocation of maximum number of PCI devices. (Default value is 96)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:annotation>
<xs:documentation>Integer from 1 to 1024.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
<xs:maxInclusive value="1024" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="MAX_IOAPIC_LINES" default="120">
<xs:annotation acrn:views="">
<xs:documentation>Maximum number of interrupt lines per IOAPIC.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:annotation>
<xs:documentation>Integer from 1 to 120.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
<xs:maxInclusive value="120" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="MAX_PT_IRQ_ENTRIES" type="xs:integer" default="256">
<xs:annotation acrn:views="advanced">
<xs:documentation>The pre-defined number of interrupt sources of all pass-through devices.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MAX_MSIX_TABLE_NUM" default="64">
<xs:annotation acrn:views="advanced">
<xs:documentation>Specify maximum number of MSI-X tables per device. If this value is empty, then the default value will be calculated from the board XML file. (Default value is 64)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:annotation>
<xs:documentation>Integer value from 1 to 2048.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
<xs:maxInclusive value="2048" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="MAX_EMULATED_MMIO" default="16">
<xs:annotation acrn:views="advanced">
<xs:documentation>Specify maximum number of emulated MMIO regions. (Default value is 16)</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:annotation>
<xs:documentation>Integer value from 1 to 128.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1" />
<xs:maxInclusive value="128" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="MiscCfgOptionsType">
<xs:all>
<xs:element name="GPU_SBDF" type="HexFormat" default="0x00000010">
<xs:annotation acrn:views="">
<xs:documentation>Segment, Bus, Device, and function of the GPU.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="HVConfigType">
<xs:all>
<xs:element name="DEBUG_OPTIONS" type="DebugOptionsType">
<xs:annotation acrn:title="Debug options" acrn:views="basic">
<xs:documentation>Configure the debug facilities.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="FEATURES" type="FeatureOptionsType">
<xs:annotation acrn:title="Hypervisor features" acrn:views="basic, advanced">
<xs:documentation>Enable hypervisor features.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MEMORY" type="MemoryOptionsType">
<xs:annotation acrn:title="Memory options" acrn:views="advanced">
<xs:documentation>Configure memory used by the hypervisor.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="CAPACITIES" type="CapacitiesOptionsType">
<xs:annotation acrn:title="Hypervisor capacities" acrn:views="advanced">
<xs:documentation>Configure the capacities of the hypervisor.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MISC_CFG" type="MiscCfgOptionsType">
<xs:annotation acrn:views="">
<xs:documentation>Miscellaneous options for workarounds.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="vuart_connections" type="VuartConnectionsType">
<xs:annotation acrn:title="Virtual UART connection" acrn:views="basic">
<xs:documentation>Specify the vUART connection setting.
Refer to :ref:`vuart_config` for detailed vUART settings.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="VMConfigType">
<xs:all>
<xs:element name="load_order" type="LoadOrderType">
<xs:annotation acrn:title="Load order" acrn:views="">
<xs:documentation>Specify the load_order.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="vm_type" type="VMType">
<xs:annotation acrn:title="VM type" acrn:views="basic">
<xs:documentation>Specify the VM type.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="name">
<xs:annotation acrn:title="VM name" acrn:views="basic">
<xs:documentation>Type in the name used to identify each VM. The VM name will be shown in the hypervisor console vm_list command.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:annotation>
<xs:documentation>string from 1 to 32 characters long.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="15" />
<xs:pattern value="\S+" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="lapic_passthrough" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:title="LAPIC passthrough" acrn:views="advanced">
<xs:documentation>Specify LAPIC to passthrough.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="io_completion_polling" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:title="I/O completion polling" acrn:views="advanced">
<xs:documentation>Specify Polling mode for IO Completion.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="nested_virtualization_support" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:title="Nested virtualization support" acrn:views="advanced">
<xs:documentation>Specify nested virtualization support for KVM.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="virtual_cat_support" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:title="Virtual CAT support" acrn:views="advanced">
<xs:documentation>Specify virtual CAT support for VM.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="secure_world_support" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:views="">
<xs:documentation>Specify secure world support for trustry OS.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="hide_mtrr_support" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:views="">
<xs:documentation>Specify MTRR capability to hide for VM.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="security_vm" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:views="">
<xs:documentation>Specify TPM2 FIXUP for VM.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="cpu_affinity" type="CPUAffinityConfiguration" minOccurs="0">
<xs:annotation acrn:title="Physical CPU affinity" acrn:views="basic">
<xs:documentation>List of pCPU that this VM's vCPUs are pinned to.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="clos" type="CLOSConfiguration">
<xs:annotation acrn:views="advanced">
<xs:documentation>Class of Service for Cache Allocation Technology.
Refer SDM 17.19.2 for details, and use with caution.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="epc_section" type="EPCSection" minOccurs="0">
<xs:annotation acrn:views="advanced" acrn:applicable-vms="pre-launched">
<xs:documentation>Specify SGX Enclave Page Cache section base and size in byte. It must be page aligned.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="memory" type="MemoryInfo">
<xs:annotation acrn:views="basic, advanced">
<xs:documentation>Specify memory information for Service and User VMs.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="priority" type="PriorityType" default="PRIO_LOW">
<xs:annotation acrn:views="">
<xs:documentation>Specify the VM vCPU priority for scheduling.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="companion_vmid" type="xs:integer" default="65535">
<xs:annotation acrn:views="">
<xs:documentation>Specify the companion VM id of this VM.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="os_config" type="OSConfigurations" minOccurs="0">
<xs:annotation acrn:applicable-vms="pre-launched, service-vm" acrn:views="basic">
<xs:documentation>General information for host kernel, boot
argument and memory.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="console_vuart" type="ConsoleVuartConfiguration" default="None">
<xs:annotation acrn:views="basic">
<xs:documentation>Specify the console vUART (aka PCI based vUART) with the vUART ID by
its ``id`` attribute.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="mmio_resources" type="MMIOResourcesConfiguration" minOccurs="0">
<xs:annotation acrn:views="basic">
<xs:documentation>MMIO resources to passthrough.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="pt_intx" type="xs:string" minOccurs="0">
<xs:annotation acrn:applicable-vms="pre-launched" acrn:views="advanced">
<xs:documentation>Determine the static memory size of pt_intx array. It is used to describe the pre-launched VM owned ioapic pins and the corresponding mapping between physical GSI and virtual GSI.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="pci_devs" type="PCIDevsConfiguration" minOccurs="0">
<xs:annotation acrn:title="PCI device assignment" acrn:applicable-vms="pre-launched, post-launched" acrn:views="basic">
<xs:documentation />
</xs:annotation>
</xs:element>
<xs:element name="PTM" type="Boolean" default="y" minOccurs="0">
<xs:annotation acrn:title="Precision Time Measurement" acrn:applicable-vms="pre-launched, post-launched" acrn:views="advanced">
<xs:documentation>Enable virtualization of PCIE Precision Time Measurement (PTM) mechanism for devices with PTM capability and for real-time application. HV provides PCIE root port emulation instead of host bridge emulation for VM , PTM could coordinate timing between device and root port with devices local timebases without relying on software.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="os_type" type="OSType" default="Non-Windows OS">
<xs:annotation acrn:title="OS type" acrn:applicable-vms="post-launched" acrn:views="basic">
<xs:documentation>Specify user VM OS type, for config tool to format the DM commandline. If it is windows, then add -windows to DM parameter. It supports Oracle virtio-blk, virtio-net and virtio-input devices for Windows guests with secure boot. For windows guest vm this option is mandatory for running Windows in a User VM. If it is not used, Windows will not recognize the virtual disk. When it is linux like OS , config tool also format the related parameters in the same way.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="vbootloader" type="EnablementType" default="Enable">
<xs:annotation acrn:title="OVMF (Open Virtual Machine Firmware)" acrn:applicable-vms="post-launched" acrn:views="basic">
<xs:documentation>Specify if to use virtual boot loader OVMF (Open Virtual Machine Firmware) to boot User VM, right now ovmf is the only virtual boot loader supported. User could also disable this to use another boot protocol with parameter -K set.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="vuart0" type="EnablementType" default="Enable">
<xs:annotation acrn:title="Emulate COM1 as standard I/O" acrn:applicable-vms="post-launched" acrn:views="basic">
<xs:documentation>Enable ACRN Device Model to emulate COM1 as a User VM standard IO.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="usb_xhci" minOccurs="0">
<xs:annotation acrn:views="basic" acrn:applicable-vms="post-launched">
<xs:documentation>Device model emulates USB controller used to support USB 3.0 devices, (also supports USB 2.0 and USB 1.0 devices). The physical USB devices attached on the specified bus and port in service VM will be detected by User VM and used as expected as parameters setting.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:annotation>
<xs:documentation>Input format: bus#-port#[:bus#-port#: ...]. e.g.: 1-2:2-4</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="([\d]+-[\d]+){0,1}(:[\d]+-[\d]+)*" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="virtio_devices">
<xs:annotation acrn:title="Virt-IO devices" acrn:views="basic" acrn:applicable-vms="post-launched">
<xs:documentation>Enable virt-IO devices in post-launched VMs.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="console" type="xs:string" minOccurs="0">
<xs:annotation acrn:views="basic">
<xs:documentation>The virtio console device setting.Input format:
``[@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]``</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="network" type="xs:string" minOccurs="0">
<xs:annotation acrn:views="basic">
<xs:documentation>The virtio network device setting.
Input format: ``device_name[,vhost][,mac=XX:XX:XX:XX:XX:XX]``.
The ``device_name`` is the name of the TAP (or MacVTap) device.
It must include the keyword ``tap``. ``vhost`` specifies the
vhost backend; otherwise, the VBSU backend is used. The ``mac``
address is optional.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="input" type="xs:string" minOccurs="0">
<xs:annotation acrn:views="basic">
<xs:documentation>The virtio input device setting.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="block" type="xs:string" minOccurs="0">
<xs:annotation acrn:views="basic">
<xs:documentation>The virtio block device setting.
Format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="id" type="xs:integer" />
</xs:complexType>
<xs:complexType name="ACRNConfigType">
<xs:all>
<xs:element name="hv" type="HVConfigType">
<xs:annotation>
<xs:documentation>The hypervisor configuration defines a working scenario and target
board by configuring the hypervisor image features and capabilities such as
setting up the log and the serial port.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="vm" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>VM configuration includes **scenario-based** VM configuration
information that is used to describe the characteristics and attributes for
all VMs in a user scenario. It also includes **launch script-based** VM
configuration information, where parameters are passed to the device model
to launch post-launched User VMs.</xs:documentation>
</xs:annotation>
<xs:alternative test=".//load_order = 'PRE_LAUNCHED_VM'" type="VMConfigType" />
<xs:alternative test=".//load_order = 'SERVICE_VM'" type="VMConfigType" />
<xs:alternative test=".//load_order = 'POST_LAUNCHED_VM'" type="VMConfigType" />
</xs:element>
</xs:all>
<xs:attribute name="board" type="xs:string" use="required" />
<xs:attribute name="scenario" type="xs:string" use="required" />
</xs:complexType>
<xs:element name="acrn-config" type="ACRNConfigType">
<xs:unique name="vmNameUnique">
<xs:selector xpath="vm"/>
<xs:field xpath="name"/>
</xs:unique>
</xs:element>
</xs:schema>