acrn-hypervisor/misc/config_tools/schema/config.xsd
Calvin Zhang 17d8eaa7ae misc: configurator: Add entry "None" to HV console selector
Add an explicit "None" entry in HV console selector if user would like
to disable debug console or there is no serial console available.

Tracked-On: #7546
Signed-off-by: Calvin Zhang <calvinzhang.cool@gmail.com>
2022-05-24 17:14:38 +08:00

543 lines
30 KiB
XML

<?xml version="1.0"?>
<xs:schema
xmlns:xi="http://www.w3.org/2001/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>Select the build type:
* ``Debug`` enables the debug shell, prints, and logs.
* ``Release`` optimizes the ACRN binary for deployment and turns off all debug infrastructure.
These settings can only be changed at build time.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SERIAL_CONSOLE" type="SerialConsoleType" default="None">
<xs:annotation acrn:title="Serial console port" acrn:views="basic"
acrn:options="//ttys/serial[type != '0']/dev_path/text(), 'None' ">
<xs:documentation>Select 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>Select the 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>Select the 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>Select the 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_ENABLED" type="Boolean" default="y">
<xs:annotation acrn:title="Hypervisor relocation" acrn:views="advanced">
<xs:documentation>Enable hypervisor relocation in memory. The bootloader 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="Virtual CPU scheduler" acrn:views="advanced">
<xs:documentation>Select the scheduling algorithm for determining the priority of User VMs running on a shared virtual CPU.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MULTIBOOT2_ENABLED" type="Boolean" default="y">
<xs:annotation acrn:title="Multiboot2" acrn:views="advanced">
<xs:documentation>Enable multiboot2 protocol support (with multiboot1 downward compatibility). If multiboot1 meets your requirements, disable this feature to reduce hypervisor code size.</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 detection of split locks. A split lock can negatively affect an application's real-time performance. If a lock is detected, an alignment check exception #AC occurs.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ENFORCE_TURNOFF_GP" type="Boolean" default="n">
<xs:annotation acrn:title="UC lock detection" acrn:views="advanced">
<xs:documentation>Enable detection of uncacheable-memory (UC) locks. A UC lock can negatively affect an application's real-time performance. If a lock is detected, a general-protection exception #GP occurs.</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 checked, permanently disables all interrupts in HV root mode.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="HYPERV_ENABLED" type="Boolean" default="y">
<xs:annotation acrn:title="Hyper-V" acrn:views="advanced">
<xs:documentation>Enable Microsoft Hyper-V Hypervisor Top-Level Functional Specification (TFLS) for User VMs running Windows.</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" 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 configuration 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 to prevent L1 terminal fault. L1 terminal fault is a hardware vulnerability that could 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 the software workaround for Machine Check Error on Page Size Change (erratum in some processor families).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RDT" type="RDTType">
<xs:annotation acrn:title="Intel Resource Director Tech" acrn:views="">
<xs:documentation>Intel Resource Director Technology (RDT) provides cache and memory bandwidth allocation features. The features can be used to improve an application's real-time performance.</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>Configure shared memory regions for inter-VM communication.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SSRAM" minOccurs="0" type="SSRAMInfo">
<xs:annotation acrn:title="Software SRAM" acrn:views="">
<xs:documentation>Configure Software SRAM. This feature reserves memory buffers as always-cached memory to improve an application's real-time performance.</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="CPU memory stack size (bytes)" acrn:views="advanced">
<xs:documentation>Specify the size of the memory stack in bytes for each physical CPU. For example, if you specify 8 kilobytes, each CPU will get its own 8-kilobyte stack.</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="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="Max PCI devices" acrn:views="advanced">
<xs:documentation>Specify the maximum number of PCI devices. This impacts the amount of memory used to maintain information about these PCI devices. The default value is calculated from the board configuration file. If you have PCI devices that were not detected by the Board Inspector, you may need to change this maximum value.</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" default="256">
<xs:annotation acrn:title="Max passthrough IRQ entries" acrn:views="advanced">
<xs:documentation>Specify the maximum number of interrupt request (IRQ) entries from all passthrough devices.</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_MSIX_TABLE_NUM" default="64">
<xs:annotation acrn:title="Max MSI-X tables" acrn:views="advanced">
<xs:documentation>Specify the maximum number of Message Signaled Interrupt MSI-X tables per device. The default value is calculated from the board configuration file.</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:title="Max emulated MMIO regions" acrn:views="advanced">
<xs:documentation>Specify the maximum number of emulated MMIO regions for device virtualization. The default value is calculated from the board configuration file.</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="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="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="vuart_connections" type="VuartConnectionsType">
<xs:annotation acrn:title="Inter-VM virtual UART connection" acrn:views="basic">
<xs:documentation>Specify the vUART connection settings.
Refer to :ref:`vuart_config` for detailed vUART settings.</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="CACHE_REGION" type="CacheRegionType" minOccurs="0">
<xs:annotation acrn:views="advanced">
<xs:documentation>Specify the cache setting.</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 VM load order.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="name" type="VMNameType">
<xs:annotation acrn:title="VM name" acrn:views="basic">
<xs:documentation>Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="vm_type" type="VMType" minOccurs="0">
<xs:annotation acrn:title="VM type" acrn:views="basic">
<xs:documentation>Select the VM type. A standard VM (``STANDARD_VM``) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (``RTVM``) offers special features for time-sensitive applications.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="console_vuart" type="ConsoleVuartConfiguration" default="None">
<xs:annotation acrn:title="Console virtual UART type" acrn:views="basic">
<xs:documentation>Select the console virtual UART (vUART) type. Add the console settings to the kernel command line by typing them in the "Linux kernel command-line parameters" text box (for example, ``console=ttyS0`` for COM port 1).</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>Select the OS type for this VM. This is required to run Windows in a User VM. See :ref:`acrn-dm_parameters` for how to include this in the Device Model arguments.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="vuart0" type="Boolean" default="y">
<xs:annotation acrn:title="Emulate COM1 as stdio I/O" acrn:applicable-vms="post-launched" acrn:views="basic">
<xs:documentation>Enable the ACRN Device Model to emulate COM1 as a User VM stdio I/O. Hypervisor global emulation will take priority over this VM setting.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="vbootloader" type="Boolean" default="y">
<xs:annotation acrn:title="Enable Open Virtual Machine FW" acrn:applicable-vms="post-launched" acrn:views="basic">
<xs:documentation>Use virtual bootloader OVMF (Open Virtual Machine Firmware) to boot this VM.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="usb_xhci" type="USBDevsConfiguration" minOccurs="0">
<xs:annotation acrn:title="Virtual USB HCI" acrn:views="basic" acrn:applicable-vms="post-launched">
<xs:documentation>Select the USB physical bus and port number that will be emulated by the ACRN Device Model for this VM. USB 3.0, 2.0, and 1.0 are supported.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="lapic_passthrough" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:title="LAPIC passthrough" acrn:applicable-vms="pre-launched, post-launched, service-vm" acrn:views="advanced">
<xs:documentation>Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.</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:applicable-vms="pre-launched, post-launched" acrn:views="advanced">
<xs:documentation>Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="nested_virtualization_support" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:title="Nested virtualization" acrn:applicable-vms="service-vm" acrn:views="advanced">
<xs:documentation>Enable nested virtualization for KVM.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="virtual_cat_number" default="0" minOccurs="0">
<xs:annotation acrn:title="Maximum virtual CLOS" acrn:applicable-vms="pre-launched, post-launched" acrn:views="advanced">
<xs:documentation>Max number of virtual CLOS MASK</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:annotation>
<xs:documentation>Integer value is not below zero.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="virtual_cat_support" type="Boolean" default="n" minOccurs="0">
<xs:annotation acrn:title="VM Virtual Cache Allocation Tech" acrn:applicable-vms="pre-launched, post-launched" acrn:views="advanced">
<xs:documentation>Enable virtualization of the Cache Allocation Technology (CAT) feature in RDT. CAT enables you to allocate cache to VMs, providing isolation to avoid performance interference from other VMs.</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 trusty 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="CPUAffinityConfigurations" minOccurs="0">
<xs:annotation acrn:title="Physical CPU affinity" acrn:views="basic" acrn:applicable-vms="pre-launched, post-launched">
<xs:documentation>Select a subset of physical CPUs that this VM can use. More than one can be selected.</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:title="SGX Enclave Page Cache" acrn:views="advanced" acrn:applicable-vms="pre-launched">
<xs:documentation>Specify the Intel Software Guard Extensions (SGX) enclave page cache (EPC) section settings.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="memory" type="MemoryInfo" minOccurs="0">
<xs:annotation acrn:title="" acrn:views="basic, advanced" acrn:applicable-vms="pre-launched, post-launched">
</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:title="OS Configuration" 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="mmio_resources" type="MMIOResourcesConfiguration" minOccurs="0">
<xs:annotation acrn:title="MMIO Resources" acrn:applicable-vms="pre-launched" 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="">
<xs:documentation>Specify 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="">
<xs:documentation>Enable virtualization of PCIe Precision Time Measurement (PTM) mechanism for devices with PTM capability and for real-time application. The hypervisor provides PCIe root port emulation instead of host bridge emulation for the VM. PTM coordinates timing between the device and root port with the device's local timebases without relying on software.</xs:documentation>
</xs:annotation>
</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="gpu" type="xs:string" minOccurs="0">
<xs:annotation acrn:title="Virtio GPU device" acrn:views="basic"
acrn:widget-options="'placeholder': 'fullscreen or geometry=[width]x[height]+[x offset]+[y offset], e.g. geometry=1280x720+0+0 specifies a 1280 x 720 pixels region at the top left corner of the screan'">
<xs:documentation>The virtio GPU device presents a GPU device to the VM.
This feature enables you to view the VM's GPU output in the Service VM.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="vsock" minOccurs="0">
<xs:annotation acrn:title="Virtio vsock CID" acrn:views="basic"
acrn:widget-options="'placeholder': '3 ~ (-2U)'">
<xs:documentation>vsock is the new socket address family for host/guest communication.
CID is the identifier for this VM.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:annotation>
<xs:documentation>Integer between 3 ~ (-2U).</xs:documentation>
</xs:annotation>
<xs:minInclusive value="3" />
<xs:maxInclusive value="4294967294" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="console" type="VirtioConsoleConfiguration" minOccurs="0" maxOccurs="unbounded">
<xs:annotation acrn:title="Virtio console device" acrn:views="basic">
<xs:documentation>Virtio console device for data input and output.
The virtio console BE driver copies data from the frontend's transmitting virtqueue when it receives a kick on virtqueue (implemented as a vmexit).
The BE driver then writes the data to backend, and can be implemented as PTY, TTY, STDIO, and regular file.
For details, see :ref:`virtio-console`.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="network" type="VirtioNetworkConfiguration" minOccurs="0" maxOccurs="unbounded">
<xs:annotation acrn:title="Virtio network device" acrn:views="basic">
<xs:documentation>The virtio network device emulates a virtual network interface card (NIC) for the VM. The frontend
is the virtio network driver, simulating the virtual NIC. The backend could be: ``tap`` device /dev/net/tun,
``MacVTap`` device /dev/tapx, or ``vhost`` device /dev/vhost-net</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="input" type="VirtioInputConfiguration" minOccurs="0" maxOccurs="unbounded">
<xs:annotation acrn:title="Virtio input device" acrn:views="basic">
<xs:documentation>The virtio input device creates a virtual human interface device such as a keyboard,
mouse, and tablet. It sends Linux input layer events over virtio.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="block" minOccurs="0" maxOccurs="unbounded">
<xs:annotation acrn:title="Virtio block device" acrn:views="basic">
<xs:documentation>The virtio-blk device presents a block device to the VM. Each virtio-blk device appears as a disk inside the VM.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:annotation acrn:widget-options="'placeholder': '/home/user/path/to/disk.image'" />
<xs:restriction base="xs:string" />
</xs:simpleType>
</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 acrn:title="Hypervisor Options">
<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 acrn:title="Virtual Machine Options">
<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" />
<xs:attribute name="scenario" type="xs:string" />
</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>