diff --git a/misc/config_tools/configurator/src/assets/schema/scenario.json b/misc/config_tools/configurator/src/assets/schema/scenario.json index 28526e926..31b7d86be 100644 --- a/misc/config_tools/configurator/src/assets/schema/scenario.json +++ b/misc/config_tools/configurator/src/assets/schema/scenario.json @@ -1,2392 +1,2420 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "type": "object", - "required": [ - "acrn-config" - ], - "properties": { - "acrn-config": { - "$ref": "#/definitions/ACRNConfigType" - } - }, - "additionalProperties": true, - "definitions": { - "Boolean": { - "type": "string", - "enum": [ - "y", - "n" - ] - }, - "EnablementType": { - "type": "string", - "enum": [ - "Enable", - "Disable" - ] - }, - "HexFormat": { - "type": "string", - "pattern": "^0[Xx][0-9A-Fa-f]+|0$" - }, - "None": { - "type": "string", - "pattern": "^[*]{0}$" - }, - "BuildType": { - "type": "string", - "enum": [ - "release", - "debug" - ] - }, - "KernLoadAddr": { - "anyOf": [ - { - "title": "None", - "type": "string", - "pattern": "^[*]{0}$" - }, - { - "title": "HexFormat", - "type": "string", - "pattern": "^0[Xx][0-9A-Fa-f]+|0$" - } - ] - }, - "KernEntryAddr": { - "anyOf": [ - { - "title": "None", - "type": "string", - "pattern": "^[*]{0}$" - }, - { - "title": "HexFormat", - "type": "string", - "pattern": "^0[Xx][0-9A-Fa-f]+|0$" - } - ] - }, - "MaxMsixTableNumType": { - "type": "integer", - "minimum": 1, - "maximum": 2048 - }, - "MaxMsixTableSizeType": { - "anyOf": [ - { - "title": "None", - "type": "string", - "pattern": "^[*]{0}$" - }, - { - "title": "MaxMsixTableNumType", - "type": "integer", - "minimum": 1, - "maximum": 2048 - } - ] - }, - "MemorySizeType": { - "anyOf": [ - { - "title": "HexFormat", - "type": "string", - "pattern": "^0[Xx][0-9A-Fa-f]+|0$" - } - ] - }, - "LogLevelType": { - "type": "string", - "enum": [ - "0", - "1", - "2", - "3", - "4", - "5" - ], - "enumNames": [ - "0: None", - "1: Critical", - "2: Error", - "3: Warning", - "4: Information", - "5: Debug" - ] - }, - "SchedulerType": { - "type": "string", - "enum": [ - "SCHED_NOOP", - "SCHED_IORR", - "SCHED_BVT", - "SCHED_PRIO" - ] - }, - "PriorityType": { - "type": "string", - "enum": [ - "PRIO_LOW", - "PRIO_HIGH" - ] - }, - "SerialConsoleType": { - "type": "string", - "pattern": "^.*ttyS[\\d]+$" - }, - "SerialConsoleOptions": { - "anyOf": [ - { - "title": "None", - "type": "string", - "pattern": "^[*]{0}$" - }, - { - "title": "SerialConsoleType", - "type": "string", - "pattern": "^.*ttyS[\\d]+$" - } - ] - }, - "VMNameType": { - "type": "string", - "pattern": "^([a-zA-Z0-9_\\-]){1,15}$" - }, - "VBDFType": { - "type": "string", - "pattern": "^[0-9A-Fa-f]{1,2}:[0-1][0-9A-Fa-f].[0-7]$" - }, - "ProviderType": { - "type": "string", - "enum": [ - "Hypervisor", - "Device Model" - ] - }, - "IVSHMEMSize": { - "type": "integer", - "enum": [ - 2, - 4, - 8, - 16, - 32, - 64, - 128, - 256, - 512 - ] - }, - "LoadOrderType": { - "type": "string", - "enum": [ - "SERVICE_VM", - "PRE_LAUNCHED_VM", - "POST_LAUNCHED_VM" - ] - }, - "VMType": { - "type": "string", - "enum": [ - "RTVM", - "STANDARD_VM", - "TEE_VM", - "REE_VM" - ] - }, - "VMKernelType": { - "type": "string", - "enum": [ - "KERNEL_BZIMAGE", - "KERNEL_RAWIMAGE", - "KERNEL_ELF" - ] - }, - "ConsoleVuartConfiguration": { - "type": "string", - "enum": [ - "None", - "COM Port 1", - "COM Port 2", - "COM Port 3", - "COM Port 4", - "PCI" - ] - }, - "VuartType": { - "type": "string", - "enum": [ - "legacy", - "pci" - ] - }, - "OSType": { - "type": "string", - "enum": [ - "Non-Windows OS", - "Windows OS" - ] - }, - "BasicVMType": { - "type": "string", - "enum": [ - "RTVM", - "STANDARD_VM" - ] - }, - "IVSHMEMVM": { - "type": "object", - "required": [ - "VM_NAME", - "VBDF" - ], - "properties": { - "VM_NAME": { - "$ref": "#/definitions/VMNameType", - "title": "Shared VMS", - "description": "
\n

\n Name of the VM which use this IVSHMEM.\n

\n
\n" - }, - "VBDF": { - "$ref": "#/definitions/VBDFType", - "title": "VBDF", - "description": "
\n

\n Bus, Device and function of the virtual\ndevice in VM . Set in hex.\n

\n
\n" - } - } - }, - "IVSHMEMVMS": { - "type": "object", - "required": [ - "IVSHMEM_VM" - ], - "properties": { - "IVSHMEM_VM": { - "items": { - "$ref": "#/definitions/IVSHMEMVM" - }, - "type": "array", - "title": "IVSHMEM_VM", - "description": "
\n

\n Set each VM which use this IVSHMEM.\n

\n
\n" - } - } - }, - "IVSHMEMRegionType": { - "type": "object", - "required": [ - "NAME", - "PROVIDED_BY", - "IVSHMEM_SIZE", - "IVSHMEM_VMS" - ], - "properties": { - "NAME": { - "type": "string", - "pattern": "^\\w+$", - "title": "Name", - "description": "
\n

\n Name of the shared memory region.\n

\n
\n" - }, - "PROVIDED_BY": { - "$ref": "#/definitions/ProviderType", - "default": "Hypervisor", - "title": "Emulated by", - "description": "
\n

\n Whether the shared memory region is emulated by the hypervisor or Device Model.\n

\n
\n" - }, - "IVSHMEM_SIZE": { - "$ref": "#/definitions/IVSHMEMSize", - "default": 2, - "title": "Size (MB)", - "description": "
\n

\n Select the size of the shared memory region\nin megabytes. The value should be a power of 2\nand no more than 512.\n

\n
\n" - }, - "IVSHMEM_VMS": { - "$ref": "#/definitions/IVSHMEMVMS", - "title": "Shared VMs", - "description": "
\n

\n Select all VMs that use the shared memory region.\n

\n
\n" - } - } - }, - "IVSHMEMInfo": { - "type": "object", - "properties": { - "IVSHMEM_REGION": { - "items": { - "$ref": "#/definitions/IVSHMEMRegionType" - }, - "type": "array", - "title": "IVSHMEM_REGION", - "description": "
\n

\n Set a inter-VM shared memory.\n

\n
\n" - } - } - }, - "RDTType": { - "type": "object", - "required": [ - "RDT_ENABLED", - "CDP_ENABLED", - "VCAT_ENABLED" - ], - "properties": { - "RDT_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Intel Resource Director Technology", - "description": "
\n

\n Enable the Intel Resource Director Technology (RDT)\nallocation feature. If the board hardware does not support\nRDT, setting this option to\n \n y\n \n is ignored.\n

\n
\n" - }, - "CDP_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Code and Data Prioritization", - "description": "
\n

\n Enable Code and Data Prioritization (CDP). CDP provides control over code and data placement in cache to improve an application's real-time performance.\n

\n
\n" - }, - "VCAT_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "VCAT_ENABLED", - "description": "
\n

\n 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.\n

\n
\n" - }, - "CLOS_MASK": { - "type": "array", - "items": { - "type": "string" - }, - "title": "CLOS_MASK", - "description": "
\n

\n Specify the cache capacity bitmask for the CLOS; only continuous '1' bits\nare allowed. The value will be ignored when hardware does not support RDT.\nThis option takes effect only if\n \n hv.FEATURES.RDT.RDT_ENABLED\n \n is set to\n \n y\n \n .\nAs\n \n vm.clos.vcpu_clos\n \n specifies the index of the CLOS to be associated with the given vCPU,\n \n hv.FEATURES.RDT.CLOS_MASK\n \n of that CLOS would impact the performance of the given vCPU.\n

\n
\n" - }, - "MBA_DELAY": { - "type": "array", - "items": { - "type": "string" - }, - "title": "MBA_DELAY", - "description": "
\n

\n Memory Bandwidth Allocation delay value.\n

\n
\n" - } - } - }, - "SSRAMInfo": { - "type": "object", - "required": [ - "SSRAM_ENABLED" - ], - "properties": { - "SSRAM_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Software SRAM (for real-time apps)", - "description": "
\n

\n Enable Software SRAM. This feature reserves memory buffers as always-cached memory to improve an application's real-time performance.\n

\n
\n" - } - } - }, - "CPUAffinityConfiguration": { - "type": "object", - "required": [ - "pcpu_id" - ], - "properties": { - "pcpu_id": { - "type": "array", - "items": { - "type": "integer", - "default": 2 - }, - "title": "pcpu_id", - "description": "
\n

\n A pCPU that this VM's vCPU is allowed to pin\nto.\n

\n
\n" - } - } - }, - "CLOSConfiguration": { - "type": "object", - "required": [ - "vcpu_clos" - ], - "properties": { - "vcpu_clos": { - "type": "array", - "items": { - "type": "integer", - "default": 0 - }, - "title": "vcpu_clos", - "description": "
\n

\n By default (\n \n virtual_cat_support\n \n is not specified):\nvcpu_clos is per-CPU and it configures each CPU in VMs to a desired CLOS ID in the\n \n VM\n \n section of the\nscenario file. Follow\n \n RDT Detection and Resource Capabilities\n \n to identify the maximum supported CLOS ID that can be used.\n

\n

\n If\n \n virtual_cat_support\n \n is specified:\nvcpu_clos is not per-CPU anymore, just a list of physical CLOSIDs (minimum 2) that are assigned to VMs\nfor vCAT use. Each vcpu_clos will be mapped to a virtual CLOSID, the first vcpu_clos is mapped to virtual\nCLOSID 0 and the second is mapped to virtual CLOSID 1, etc.\n

\n
\n" - } - } - }, - "EPCSection": { - "type": "object", - "required": [ - "base", - "size" - ], - "properties": { - "base": { - "$ref": "#/definitions/HexFormat", - "default": 0, - "title": "Intel Software Guard Extensions (SGX) EPC section base", - "description": "
\n

\n Specify the enclave page cache (EPC) section base for Intel Software Guard Extensions (SGX). Must be page aligned.\n

\n
\n" - }, - "size": { - "$ref": "#/definitions/HexFormat", - "default": 0, - "title": "Intel Software Guard Extensions (SGX) EPC section size (bytes)", - "description": "
\n

\n Specify the enclave page cache (EPC) section size in bytes for Intel Software Guard Extensions (SGX). Must be page aligned.\n

\n
\n" - } - } - }, - "MemoryInfo": { - "type": "object", - "required": [ - "whole", - "start_hpa" - ], - "properties": { - "whole": { - "type": "integer", - "default": 256, - "title": "VM physical memory allocation (MB)", - "description": "
\n

\n Specify the physical memory allocated to this VM in Megabytes.\n

\n
\n" - }, - "start_hpa": { - "$ref": "#/definitions/HexFormat", - "default": "0x100000000", - "title": "start_hpa", - "description": "
\n

\n The starting physical address in host for the VM.\n

\n
\n" - }, - "size": { - "$ref": "#/definitions/MemorySizeType", - "default": "0x20000000", - "title": "size", - "description": "
\n

\n The memory size in bytes for the VM. Default value is\n \n 0x200000000\n \n .\n

\n
\n" - }, - "start_hpa2": { - "$ref": "#/definitions/HexFormat", - "default": "0x0", - "title": "start_hpa2", - "description": "
\n

\n Start of second HPA for non-contiguous allocations in host for the VM.\n

\n
\n" - }, - "size_hpa2": { - "$ref": "#/definitions/MemorySizeType", - "default": "0x0", - "title": "size_hpa2", - "description": "
\n

\n Memory size of second HPA for non-contiguous allocations in Bytes for the VM.\n

\n
\n" - } - } - }, - "OSConfigurations": { - "type": "object", - "required": [ - "kern_type", - "kern_mod" - ], - "properties": { - "kern_type": { - "$ref": "#/definitions/VMKernelType", - "title": "Kernel image type", - "description": "
\n

\n Select the kernel image type so that the hypervisor can load it correctly.\n

\n
\n" - }, - "kern_mod": { - "type": "string", - "title": "Kernel module tag", - "description": "
\n

\n Specify the tag for the kernel image that is used as a multiboot module. The tag's spelling must exactly match the module tag in the GRUB multiboot cmdline.\n

\n
\n" - }, - "ramdisk_mod": { - "type": "string", - "title": "RAMdisk module tag", - "description": "
\n

\n Specify the tag for the RAMdisk image that is used as a multiboot module. The tag's spelling must exactly match the module tag in the GRUB multiboot cmdline.\n

\n
\n" - }, - "bootargs": { - "type": "string", - "title": "Kernel command-line parameters", - "description": "
\n

\n Specify the command-line parameters that will be used to boot the kernel for this VM. See\n \n Linux documentation\n \n for a list of parameters.\n

\n
\n" - }, - "kern_load_addr": { - "$ref": "#/definitions/KernLoadAddr", - "title": "kern_load_addr", - "description": "
\n

\n The loading address in host memory for the VM kernel.\n

\n
\n" - }, - "kern_entry_addr": { - "$ref": "#/definitions/KernEntryAddr", - "title": "kern_entry_addr", - "description": "
\n

\n The entry address in host memory for the VM kernel.\n

\n
\n" - } - } - }, - "VuartEndpointType": { - "type": "object", - "required": [ - "vm_name", - "io_port" - ], - "properties": { - "vm_name": { - "type": "string", - "title": "Virtual UART port", - "description": "
\n

\n Virtual UART port\n

\n
\n" - }, - "io_port": { - "$ref": "#/definitions/HexFormat", - "default": "0x3F", - "title": "Virtual I/O address", - "description": "
\n

\n Virtual I/O address\n

\n
\n" - }, - "vbdf": { - "items": { - "$ref": "#/definitions/VBDFType" - }, - "type": "array", - "maxItems": 1 - } - } - }, - "VuartConnectionType": { - "type": "object", - "required": [ - "name", - "type", - "endpoint" - ], - "properties": { - "name": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/VuartType", - "default": "legacy" - }, - "endpoint": { - "minItems": 2, - "items": { - "$ref": "#/definitions/VuartEndpointType" - }, - "type": "array", - "maxItems": 2 - } - } - }, - "VuartConnectionsType": { - "type": "object", - "properties": { - "vuart_connection": { - "items": { - "$ref": "#/definitions/VuartConnectionType" - }, - "type": "array" - } - } - }, - "MMIOResourcesConfiguration": { - "type": "object", - "properties": { - "TPM2": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Trusted platform module (TPM2) passthrough", - "description": "
\n

\n Pass through the trusted platform module (TPM2) device to this VM.\n

\n
\n" - }, - "p2sb": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Primary-to-Sideband bridge passthrough", - "description": "
\n

\n Pass through the Primary-to-Sideband (P2SB) bridge register access BAR to this VM.\n

\n
\n" - } - } - }, - "PCIDevsConfiguration": { - "type": "object", - "properties": { - "pci_dev": { - "type": "array", - "items": { - "type": "string" - }, - "title": "PCI device assignment", - "description": "
\n

\n Select the PCI devices you want to assign to this virtual machine.\n

\n
\n", - "enum": { - "type": "dynamicEnum", - "function": "get_enum", - "source": "board_xml", - "selector": "//device[class]/@description", - "sorted": "lambda s: (s.split(' ', maxsplit=1)[-1].split(':')[0], s.split(' ')[0])" - } - } - } - }, - "DebugOptionsType": { - "type": "object", - "required": [ - "BUILD_TYPE", - "SERIAL_CONSOLE", - "MEM_LOGLEVEL", - "NPK_LOGLEVEL", - "CONSOLE_LOGLEVEL" - ], - "properties": { - "BUILD_TYPE": { - "$ref": "#/definitions/BuildType", - "default": "debug", - "title": "Build type", - "description": "
\n

\n Select the 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 settings can only be changed at build time.\n

\n
\n" - }, - "SERIAL_CONSOLE": { - "$ref": "#/definitions/SerialConsoleOptions", - "title": "Serial console port", - "description": "
\n

\n Select the host serial device used for hypervisor debugging.\n

\n
\n", - "enum": { - "type": "dynamicEnum", - "function": "get_enum", - "source": "board_xml", - "selector": "//ttys/serial[type != '0']/dev_path/text()", - "sorted": null - } - }, - "MEM_LOGLEVEL": { - "$ref": "#/definitions/LogLevelType", - "default": 0, - "title": "ACRN log level", - "description": "
\n

\n 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.\n

\n
\n" - }, - "NPK_LOGLEVEL": { - "$ref": "#/definitions/LogLevelType", - "default": 0, - "title": "Intel Trace Hub log level", - "description": "
\n

\n 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.\n

\n
\n" - }, - "CONSOLE_LOGLEVEL": { - "$ref": "#/definitions/LogLevelType", - "default": 0, - "title": "Serial console log level", - "description": "
\n

\n Select the default log level for log messages written to the serial console. Log messages with the selected value or lower are displayed.\n

\n
\n" - } - } - }, - "FeatureOptionsType": { - "type": "object", - "required": [ - "RELOC", - "SCHEDULER", - "MULTIBOOT2", - "ENFORCE_TURNOFF_AC", - "ENFORCE_TURNOFF_GP", - "SECURITY_VM_FIXUP", - "KEEP_IRQ_DISABLED", - "RDT", - "HYPERV_ENABLED", - "IOMMU_ENFORCE_SNP", - "ACPI_PARSE_ENABLED", - "L1D_VMENTRY_ENABLED", - "MCE_ON_PSC_DISABLED", - "IVSHMEM" - ], - "properties": { - "RELOC": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Hypervisor relocation in memory", - "description": "
\n

\n Enable hypervisor relocation in memory. The bootloader may need to change the location of the hypervisor because of other firmware.\n

\n
\n" - }, - "SCHEDULER": { - "$ref": "#/definitions/SchedulerType", - "default": "SCHED_BVT", - "title": "Virtual CPU scheduler", - "description": "
\n

\n Select the scheduling algorithm used to determine which User VM runs on a shared virtual CPU.\n

\n
\n" - }, - "MULTIBOOT2": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Multiboot2", - "description": "
\n

\n Enable multiboot2 protocol support and multiboot1 downward compatibility. Disable this feature if multiboot1 meets your requirements and to reduce lines of code.\n

\n
\n" - }, - "ENFORCE_TURNOFF_AC": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Split lock detection", - "description": "
\n

\n Enable detection of split locks, which can negatively affect an application's real-time performance. If a lock is detected, an alignment check exception #AC occurs.\n

\n
\n" - }, - "ENFORCE_TURNOFF_GP": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Uncacheable-memory lock detection", - "description": "
\n

\n Enable detection of uncacheable-memory locks, which can negatively affect an application's real-time performance. If a lock is detected, a general-protection exception #GP occurs.\n

\n
\n" - }, - "SECURITY_VM_FIXUP": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "SECURITY_VM_FIXUP", - "description": "
\n

\n Enable to do fixup for TPM2 and SMBIOS for Security VM. If no Security VM, setting this option to\n \n n\n \n

\n
\n" - }, - "KEEP_IRQ_DISABLED": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "KEEP_IRQ_DISABLED", - "description": "
\n

\n If\n \n y\n \n , permanently disables all interrupts in HV root mode.\n

\n
\n" - }, - "RDT": { - "$ref": "#/definitions/RDTType", - "title": "Intel Resource Director Technology (RDT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "HYPERV_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Hyper-V virtualization technology", - "description": "
\n

\n Enable Microsoft Hyper-V Hypervisor Top-Level Functional Specification (TFLS) for Windows User VMs.\n

\n
\n" - }, - "IOMMU_ENFORCE_SNP": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "IOMMU_ENFORCE_SNP", - "description": "
\n

\n Specify if the IOMMU enforces snoop behavior of DMA operations.\n

\n
\n" - }, - "ACPI_PARSE_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Parse ACPI tables at runtime", - "description": "
\n

\n 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.\n

\n
\n" - }, - "L1D_VMENTRY_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Mitigate L1 terminal fault", - "description": "
\n

\n Enable L1 cache flush before VM entry to prevent L1 terminal fault. L1 terminal fault is a hardware vulnerability that allows unauthorized disclosure of information residing in the L1 data cache.\n

\n
\n" - }, - "MCE_ON_PSC_DISABLED": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Machine Check Error (MCE) workaround", - "description": "
\n

\n Enable the software workaround for Machine Check Error on Page Size Change (hardware bug in some processor families).\n

\n
\n" - }, - "IVSHMEM": { - "$ref": "#/definitions/IVSHMEMInfo", - "title": "Inter-VM shared memory", - "description": "" - }, - "SSRAM": { - "$ref": "#/definitions/SSRAMInfo", - "title": "Software SRAM (for real-time apps)", - "description": "" - } - } - }, - "MemoryOptionsType": { - "type": "object", - "required": [ - "STACK_SIZE", - "HV_RAM_START" - ], - "properties": { - "STACK_SIZE": { - "$ref": "#/definitions/HexFormat", - "default": "0x2000", - "title": "CPU memory stack size (bytes per CPU)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "HV_RAM_START": { - "$ref": "#/definitions/HexFormat", - "default": "0x00400000", - "title": "HV_RAM_START", - "description": "
\n

\n The 2MB-aligned starting physical address of the RAM region used by the hypervisor.\n

\n
\n" - } - } - }, - "CapacitiesOptionsType": { - "type": "object", - "required": [ - "MAX_VM_NUM", - "MAX_IOAPIC_NUM", - "MAX_PCI_DEV_NUM", - "MAX_IOAPIC_LINES", - "MAX_PT_IRQ_ENTRIES", - "MAX_MSIX_TABLE_NUM", - "MAX_EMULATED_MMIO" - ], - "properties": { - "MAX_VM_NUM": { - "type": "integer", - "default": 16, - "title": "MAX_VM_NUM", - "description": "
\n

\n Maximum number of User VMs allowed.\n

\n
\n" - }, - "MAX_IOAPIC_NUM": { - "type": "integer", - "minimum": 1, - "maximum": 10, - "default": 1, - "title": "MAX_IOAPIC_NUM", - "description": "
\n

\n Maximum number of IOAPICs.\n

\n
\n" - }, - "MAX_PCI_DEV_NUM": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "default": 96, - "title": "Maximum number of PCI devices", - "description": "
\n

\n 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.\n

\n
\n" - }, - "MAX_IOAPIC_LINES": { - "type": "integer", - "minimum": 1, - "maximum": 120, - "default": 120, - "title": "MAX_IOAPIC_LINES", - "description": "
\n

\n Maximum number of interrupt lines per IOAPIC.\n

\n
\n" - }, - "MAX_PT_IRQ_ENTRIES": { - "type": "integer", - "default": 256, - "title": "Maximum number of IRQ entries for passthrough devices", - "description": "
\n

\n Specify the maximum number of interrupt request (IRQ) entries from all passthrough devices.\n

\n
\n" - }, - "MAX_MSIX_TABLE_NUM": { - "type": "integer", - "minimum": 1, - "maximum": 2048, - "default": 64, - "title": "Maximum number of MSI-X tables per device", - "description": "
\n

\n Specify the maximum number of Message Signaled Interrupt MSI-X tables per device. The default value is calculated from the board configuration file.\n

\n
\n" - }, - "MAX_EMULATED_MMIO": { - "type": "integer", - "minimum": 1, - "maximum": 128, - "default": 16, - "title": "Maximum number of emulated MMIO regions", - "description": "
\n

\n Specify the maximum number of emulated MMIO regions for device virtualization. The default value is calculated from the board configuration file.\n

\n
\n" - } - } - }, - "MiscCfgOptionsType": { - "type": "object", - "required": [ - "GPU_SBDF" - ], - "properties": { - "GPU_SBDF": { - "$ref": "#/definitions/HexFormat", - "default": "0x00000010", - "title": "GPU_SBDF", - "description": "
\n

\n Segment, Bus, Device, and function of the GPU.\n

\n
\n" - } - } - }, - "HVConfigType": { - "type": "object", - "required": [ - "DEBUG_OPTIONS", - "FEATURES", - "MEMORY", - "CAPACITIES", - "MISC_CFG", - "vuart_connections" - ], - "properties": { - "DEBUG_OPTIONS": { - "$ref": "#/definitions/DebugOptionsType", - "title": "Debug options", - "description": "
\n

\n Configure the debug facilities.\n

\n
\n" - }, - "FEATURES": { - "$ref": "#/definitions/FeatureOptionsType", - "title": "Hypervisor features", - "description": "
\n

\n Enable hypervisor features.\n

\n
\n" - }, - "MEMORY": { - "$ref": "#/definitions/MemoryOptionsType", - "title": "Memory options", - "description": "
\n

\n Configure memory used by the hypervisor.\n

\n
\n" - }, - "CAPACITIES": { - "$ref": "#/definitions/CapacitiesOptionsType", - "title": "Hypervisor capacities", - "description": "
\n

\n Configure the capacities of the hypervisor.\n

\n
\n" - }, - "MISC_CFG": { - "$ref": "#/definitions/MiscCfgOptionsType", - "title": "MISC_CFG", - "description": "
\n

\n Miscellaneous options for workarounds.\n

\n
\n" - }, - "vuart_connections": { - "$ref": "#/definitions/VuartConnectionsType", - "title": "Virtual UART connection", - "description": "
\n

\n Specify the vUART connection settings.\nRefer to\n \n Enable vUART Configurations\n \n for detailed vUART settings.\n

\n
\n" - } - } - }, - "VMConfigType": { - "type": "object", - "required": [ - "load_order", - "vm_type", - "name", - "clos", - "memory", - "priority", - "companion_vmid", - "console_vuart", - "os_type", - "vbootloader", - "vuart0", - "virtio_devices" - ], - "properties": { - "load_order": { - "$ref": "#/definitions/LoadOrderType", - "title": "Load order", - "description": "
\n

\n Specify the load_order.\n

\n
\n" - }, - "vm_type": { - "$ref": "#/definitions/VMType", - "title": "VM type", - "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" - }, - "name": { - "type": "string", - "minLength": 1, - "maxLength": 15, - "pattern": "^\\S+$", - "title": "VM name", - "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" - }, - "lapic_passthrough": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "LAPIC passthrough", - "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "io_completion_polling": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "I/O completion polling", - "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "nested_virtualization_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Nested virtualization", - "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" - }, - "virtual_cat_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Virtual Cache Allocation Technology (vCAT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "secure_world_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "secure_world_support", - "description": "
\n

\n Specify secure world support for trustry OS.\n

\n
\n" - }, - "hide_mtrr_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "hide_mtrr_support", - "description": "
\n

\n Specify MTRR capability to hide for VM.\n

\n
\n" - }, - "security_vm": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "security_vm", - "description": "
\n

\n Specify TPM2 FIXUP for VM.\n

\n
\n" - }, - "cpu_affinity": { - "$ref": "#/definitions/CPUAffinityConfiguration", - "title": "Physical CPU affinity", - "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" - }, - "clos": { - "$ref": "#/definitions/CLOSConfiguration", - "title": "clos", - "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" - }, - "epc_section": { - "$ref": "#/definitions/EPCSection", - "title": "epc_section", - "description": "
\n

\n Specify the Intel Software Guard Extensions (SGX) enclave page cache (EPC) section settings.\n

\n
\n" - }, - "memory": { - "$ref": "#/definitions/MemoryInfo", - "title": "memory", - "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" - }, - "priority": { - "$ref": "#/definitions/PriorityType", - "default": "PRIO_LOW", - "title": "priority", - "description": "
\n

\n Specify the VM vCPU priority for scheduling.\n

\n
\n" - }, - "companion_vmid": { - "type": "integer", - "default": 65535, - "title": "companion_vmid", - "description": "
\n

\n Specify the companion VM id of this VM.\n

\n
\n" - }, - "os_config": { - "$ref": "#/definitions/OSConfigurations", - "title": "os_config", - "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" - }, - "console_vuart": { - "$ref": "#/definitions/ConsoleVuartConfiguration", - "default": "None", - "title": "Console virtual UART type", - "description": "
\n

\n 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).\n

\n
\n" - }, - "mmio_resources": { - "$ref": "#/definitions/MMIOResourcesConfiguration", - "title": "mmio_resources", - "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" - }, - "pt_intx": { - "type": "string", - "title": "pt_intx", - "description": "
\n

\n Specify the pre-launched VM owned IOAPIC pins and the corresponding mapping between physical GSI and virtual GSI.\n

\n
\n" - }, - "pci_devs": { - "$ref": "#/definitions/PCIDevsConfiguration", - "title": "PCI device assignment", - "description": "" - }, - "PTM": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Precision Time Measurement", - "description": "
\n

\n 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.\n

\n
\n" - }, - "os_type": { - "$ref": "#/definitions/OSType", - "default": "Non-Windows OS", - "title": "OS type", - "description": "
\n

\n Select the OS type for this VM. This is required to run Windows in a User VM. See\n \n Device Model Parameters\n \n for how to include this in the Device Model arguments.\n

\n
\n" - }, - "vbootloader": { - "$ref": "#/definitions/EnablementType", - "default": "Enable", - "title": "OVMF (Open Virtual Machine Firmware)", - "description": "
\n

\n Use virtual bootloader OVMF (Open Virtual Machine Firmware) to boot this VM.\n

\n
\n" - }, - "vuart0": { - "$ref": "#/definitions/EnablementType", - "default": "Enable", - "title": "Emulate COM1 as stdio I/O in Device Model", - "description": "
\n

\n 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.\n

\n
\n" - }, - "usb_xhci": { - "type": "string", - "pattern": "^([\\d]+-[\\d]+){0,1}(:[\\d]+-[\\d]+)*$", - "title": "Virtual USB host controller interface", - "description": "
\n

\n 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.\n

\n
\n" - }, - "virtio_devices": { - "type": "object", - "properties": { - "console": { - "type": "string", - "title": "console", - "description": "
\n
\n
\n The virtio console device setting.Input format:\n
\n
\n

\n \n \n [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]\n \n \n

\n
\n
\n
\n" - }, - "network": { - "type": "string", - "title": "network", - "description": "
\n
\n
\n The virtio network device setting.\n
\n
\n

\n Input format:\n \n \n device_name[,vhost][,mac=XX:XX:XX:XX:XX:XX]\n \n \n .\nThe\n \n device_name\n \n is the name of the TAP (or MacVTap) device.\nIt must include the keyword\n \n tap\n \n .\n \n vhost\n \n specifies the\nvhost backend; otherwise, the VBSU backend is used. The\n \n mac\n \n address is optional.\n

\n
\n
\n
\n" - }, - "input": { - "type": "string", - "title": "input", - "description": "
\n

\n The virtio input device setting.\n

\n
\n" - }, - "block": { - "type": "string", - "title": "block", - "description": "
\n
\n
\n The virtio block device setting.\n
\n
\n

\n Format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img\n

\n
\n
\n
\n" - } - }, - "title": "Virt-IO devices", - "description": "
\n

\n Enable virt-IO devices in post-launched VMs.\n

\n
\n" - } - } - }, - "ACRNConfigType": { - "type": "object", - "required": [ - "hv" - ], - "properties": { - "hv": { - "$ref": "#/definitions/HVConfigType", - "title": "hv", - "description": "
\n

\n The hypervisor configuration defines a working scenario and target\nboard by configuring the hypervisor image features and capabilities such as\nsetting up the log and the serial port.\n

\n
\n" - } - } - }, - "PreLaunchedMemoryInfo": { - "type": "object", - "required": [ - "start_hpa" - ], - "properties": { - "start_hpa": { - "$ref": "#/definitions/HexFormat", - "default": "0x100000000", - "title": "start_hpa", - "description": "
\n

\n The starting physical address in host for the VM.\n

\n
\n" - }, - "size": { - "$ref": "#/definitions/MemorySizeType", - "default": "0x20000000", - "title": "size", - "description": "
\n

\n The memory size in bytes for the VM. Default value is\n \n 0x200000000\n \n .\n

\n
\n" - }, - "start_hpa2": { - "$ref": "#/definitions/HexFormat", - "default": "0x0", - "title": "start_hpa2", - "description": "
\n

\n Start of second HPA for non-contiguous allocations in host for the VM.\n

\n
\n" - }, - "size_hpa2": { - "$ref": "#/definitions/MemorySizeType", - "default": "0x0", - "title": "size_hpa2", - "description": "
\n

\n Memory size of second HPA for non-contiguous allocations in Bytes for the VM.\n

\n
\n" - } - } - }, - "PreLaunchedVMConfigType": { - "type": "object", - "required": [ - "load_order", - "vm_type", - "name", - "clos", - "memory", - "priority", - "companion_vmid", - "console_vuart" - ], - "properties": { - "load_order": { - "$ref": "#/definitions/LoadOrderType", - "title": "Load order", - "description": "
\n

\n Specify the load_order.\n

\n
\n" - }, - "vm_type": { - "$ref": "#/definitions/VMType", - "title": "VM type", - "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" - }, - "name": { - "type": "string", - "minLength": 1, - "maxLength": 15, - "pattern": "^\\S+$", - "title": "VM name", - "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" - }, - "lapic_passthrough": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "LAPIC passthrough", - "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "io_completion_polling": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "I/O completion polling", - "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "nested_virtualization_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Nested virtualization", - "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" - }, - "virtual_cat_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Virtual Cache Allocation Technology (vCAT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "secure_world_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "secure_world_support", - "description": "
\n

\n Specify secure world support for trustry OS.\n

\n
\n" - }, - "hide_mtrr_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "hide_mtrr_support", - "description": "
\n

\n Specify MTRR capability to hide for VM.\n

\n
\n" - }, - "security_vm": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "security_vm", - "description": "
\n

\n Specify TPM2 FIXUP for VM.\n

\n
\n" - }, - "cpu_affinity": { - "$ref": "#/definitions/CPUAffinityConfiguration", - "title": "Physical CPU affinity", - "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" - }, - "clos": { - "$ref": "#/definitions/CLOSConfiguration", - "title": "clos", - "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" - }, - "epc_section": { - "$ref": "#/definitions/EPCSection", - "title": "epc_section", - "description": "
\n

\n Specify the Intel Software Guard Extensions (SGX) enclave page cache (EPC) section settings.\n

\n
\n" - }, - "memory": { - "$ref": "#/definitions/PreLaunchedMemoryInfo", - "title": "memory", - "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" - }, - "priority": { - "$ref": "#/definitions/PriorityType", - "default": "PRIO_LOW", - "title": "priority", - "description": "
\n

\n Specify the VM vCPU priority for scheduling.\n

\n
\n" - }, - "companion_vmid": { - "type": "integer", - "default": 65535, - "title": "companion_vmid", - "description": "
\n

\n Specify the companion VM id of this VM.\n

\n
\n" - }, - "os_config": { - "$ref": "#/definitions/OSConfigurations", - "title": "os_config", - "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" - }, - "console_vuart": { - "$ref": "#/definitions/ConsoleVuartConfiguration", - "default": "None", - "title": "Console virtual UART type", - "description": "
\n

\n 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).\n

\n
\n" - }, - "mmio_resources": { - "$ref": "#/definitions/MMIOResourcesConfiguration", - "title": "mmio_resources", - "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" - }, - "pt_intx": { - "type": "string", - "title": "pt_intx", - "description": "
\n

\n Specify the pre-launched VM owned IOAPIC pins and the corresponding mapping between physical GSI and virtual GSI.\n

\n
\n" - }, - "pci_devs": { - "$ref": "#/definitions/PCIDevsConfiguration", - "title": "PCI device assignment", - "description": "" - }, - "PTM": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Precision Time Measurement", - "description": "
\n

\n 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.\n

\n
\n" - } - } - }, - "ServiceMemoryInfo": { - "type": "object", - "required": [ - "start_hpa" - ], - "properties": { - "start_hpa": { - "$ref": "#/definitions/HexFormat", - "default": "0x100000000", - "title": "start_hpa", - "description": "
\n

\n The starting physical address in host for the VM.\n

\n
\n" - }, - "size": { - "$ref": "#/definitions/MemorySizeType", - "default": "0x20000000", - "title": "size", - "description": "
\n

\n The memory size in bytes for the VM. Default value is\n \n 0x200000000\n \n .\n

\n
\n" - }, - "start_hpa2": { - "$ref": "#/definitions/HexFormat", - "default": "0x0", - "title": "start_hpa2", - "description": "
\n

\n Start of second HPA for non-contiguous allocations in host for the VM.\n

\n
\n" - }, - "size_hpa2": { - "$ref": "#/definitions/MemorySizeType", - "default": "0x0", - "title": "size_hpa2", - "description": "
\n

\n Memory size of second HPA for non-contiguous allocations in Bytes for the VM.\n

\n
\n" - } - } - }, - "ServiceVMConfigType": { - "type": "object", - "required": [ - "load_order", - "vm_type", - "name", - "clos", - "memory", - "priority", - "companion_vmid", - "console_vuart" - ], - "properties": { - "load_order": { - "$ref": "#/definitions/LoadOrderType", - "title": "Load order", - "description": "
\n

\n Specify the load_order.\n

\n
\n" - }, - "vm_type": { - "$ref": "#/definitions/VMType", - "title": "VM type", - "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" - }, - "name": { - "type": "string", - "minLength": 1, - "maxLength": 15, - "pattern": "^\\S+$", - "title": "VM name", - "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" - }, - "lapic_passthrough": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "LAPIC passthrough", - "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "io_completion_polling": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "I/O completion polling", - "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "nested_virtualization_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Nested virtualization", - "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" - }, - "virtual_cat_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Virtual Cache Allocation Technology (vCAT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "secure_world_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "secure_world_support", - "description": "
\n

\n Specify secure world support for trustry OS.\n

\n
\n" - }, - "hide_mtrr_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "hide_mtrr_support", - "description": "
\n

\n Specify MTRR capability to hide for VM.\n

\n
\n" - }, - "security_vm": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "security_vm", - "description": "
\n

\n Specify TPM2 FIXUP for VM.\n

\n
\n" - }, - "cpu_affinity": { - "$ref": "#/definitions/CPUAffinityConfiguration", - "title": "Physical CPU affinity", - "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" - }, - "clos": { - "$ref": "#/definitions/CLOSConfiguration", - "title": "clos", - "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" - }, - "memory": { - "$ref": "#/definitions/ServiceMemoryInfo", - "title": "memory", - "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" - }, - "priority": { - "$ref": "#/definitions/PriorityType", - "default": "PRIO_LOW", - "title": "priority", - "description": "
\n

\n Specify the VM vCPU priority for scheduling.\n

\n
\n" - }, - "companion_vmid": { - "type": "integer", - "default": 65535, - "title": "companion_vmid", - "description": "
\n

\n Specify the companion VM id of this VM.\n

\n
\n" - }, - "os_config": { - "$ref": "#/definitions/OSConfigurations", - "title": "os_config", - "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" - }, - "console_vuart": { - "$ref": "#/definitions/ConsoleVuartConfiguration", - "default": "None", - "title": "Console virtual UART type", - "description": "
\n

\n 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).\n

\n
\n" - } - } - }, - "PostLaunchedMemoryInfo": { - "type": "object", - "required": [ - "whole" - ], - "properties": { - "whole": { - "type": "integer", - "default": 256, - "title": "VM physical memory allocation (MB)", - "description": "
\n

\n Specify the physical memory allocated to this VM in Megabytes.\n

\n
\n" - } - } - }, - "PostLaunchedMMIOResourcesConfiguration": { - "type": "object", - "properties": { - "TPM2": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Trusted platform module (TPM2) passthrough", - "description": "
\n

\n Pass through the trusted platform module (TPM2) device to this VM.\n

\n
\n" - } - } - }, - "PostLaunchedVMConfigType": { - "type": "object", - "required": [ - "load_order", - "vm_type", - "name", - "clos", - "memory", - "priority", - "companion_vmid", - "console_vuart", - "os_type", - "vbootloader", - "vuart0", - "virtio_devices" - ], - "properties": { - "load_order": { - "$ref": "#/definitions/LoadOrderType", - "title": "Load order", - "description": "
\n

\n Specify the load_order.\n

\n
\n" - }, - "vm_type": { - "$ref": "#/definitions/VMType", - "title": "VM type", - "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" - }, - "name": { - "type": "string", - "minLength": 1, - "maxLength": 15, - "pattern": "^\\S+$", - "title": "VM name", - "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" - }, - "lapic_passthrough": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "LAPIC passthrough", - "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "io_completion_polling": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "I/O completion polling", - "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "nested_virtualization_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Nested virtualization", - "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" - }, - "virtual_cat_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Virtual Cache Allocation Technology (vCAT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "secure_world_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "secure_world_support", - "description": "
\n

\n Specify secure world support for trustry OS.\n

\n
\n" - }, - "hide_mtrr_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "hide_mtrr_support", - "description": "
\n

\n Specify MTRR capability to hide for VM.\n

\n
\n" - }, - "security_vm": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "security_vm", - "description": "
\n

\n Specify TPM2 FIXUP for VM.\n

\n
\n" - }, - "cpu_affinity": { - "$ref": "#/definitions/CPUAffinityConfiguration", - "title": "Physical CPU affinity", - "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" - }, - "clos": { - "$ref": "#/definitions/CLOSConfiguration", - "title": "clos", - "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" - }, - "memory": { - "$ref": "#/definitions/PostLaunchedMemoryInfo", - "title": "memory", - "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" - }, - "priority": { - "$ref": "#/definitions/PriorityType", - "default": "PRIO_LOW", - "title": "priority", - "description": "
\n

\n Specify the VM vCPU priority for scheduling.\n

\n
\n" - }, - "companion_vmid": { - "type": "integer", - "default": 65535, - "title": "companion_vmid", - "description": "
\n

\n Specify the companion VM id of this VM.\n

\n
\n" - }, - "console_vuart": { - "$ref": "#/definitions/ConsoleVuartConfiguration", - "default": "None", - "title": "Console virtual UART type", - "description": "
\n

\n 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).\n

\n
\n" - }, - "mmio_resources": { - "$ref": "#/definitions/PostLaunchedMMIOResourcesConfiguration", - "title": "mmio_resources", - "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" - }, - "pci_devs": { - "$ref": "#/definitions/PCIDevsConfiguration", - "title": "PCI device assignment", - "description": "" - }, - "PTM": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Precision Time Measurement", - "description": "
\n

\n 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.\n

\n
\n" - }, - "os_type": { - "$ref": "#/definitions/OSType", - "default": "Non-Windows OS", - "title": "OS type", - "description": "
\n

\n Select the OS type for this VM. This is required to run Windows in a User VM. See\n \n Device Model Parameters\n \n for how to include this in the Device Model arguments.\n

\n
\n" - }, - "vbootloader": { - "$ref": "#/definitions/EnablementType", - "default": "Enable", - "title": "OVMF (Open Virtual Machine Firmware)", - "description": "
\n

\n Use virtual bootloader OVMF (Open Virtual Machine Firmware) to boot this VM.\n

\n
\n" - }, - "vuart0": { - "$ref": "#/definitions/EnablementType", - "default": "Enable", - "title": "Emulate COM1 as stdio I/O in Device Model", - "description": "
\n

\n 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.\n

\n
\n" - }, - "usb_xhci": { - "type": "string", - "pattern": "^([\\d]+-[\\d]+){0,1}(:[\\d]+-[\\d]+)*$", - "title": "Virtual USB host controller interface", - "description": "
\n

\n 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.\n

\n
\n" - }, - "virtio_devices": { - "type": "object", - "properties": { - "console": { - "type": "string", - "title": "console", - "description": "
\n
\n
\n The virtio console device setting.Input format:\n
\n
\n

\n \n \n [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]\n \n \n

\n
\n
\n
\n" - }, - "network": { - "type": "string", - "title": "network", - "description": "
\n
\n
\n The virtio network device setting.\n
\n
\n

\n Input format:\n \n \n device_name[,vhost][,mac=XX:XX:XX:XX:XX:XX]\n \n \n .\nThe\n \n device_name\n \n is the name of the TAP (or MacVTap) device.\nIt must include the keyword\n \n tap\n \n .\n \n vhost\n \n specifies the\nvhost backend; otherwise, the VBSU backend is used. The\n \n mac\n \n address is optional.\n

\n
\n
\n
\n" - }, - "input": { - "type": "string", - "title": "input", - "description": "
\n

\n The virtio input device setting.\n

\n
\n" - }, - "block": { - "type": "string", - "title": "block", - "description": "
\n
\n
\n The virtio block device setting.\n
\n
\n

\n Format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img\n

\n
\n
\n
\n" - } - }, - "title": "Virt-IO devices", - "description": "
\n

\n Enable virt-IO devices in post-launched VMs.\n

\n
\n" - } - } - }, - "BasicMemoryInfo": { - "type": "object", - "required": [ - "whole" - ], - "properties": { - "whole": { - "type": "integer", - "default": 256, - "title": "VM physical memory allocation (MB)", - "description": "
\n

\n Specify the physical memory allocated to this VM in Megabytes.\n

\n
\n" - } - } - }, - "VMBasicConfigType": { - "type": "object", - "required": [ - "vm_type", - "name", - "memory", - "console_vuart", - "os_type", - "vbootloader", - "vuart0", - "virtio_devices" - ], - "properties": { - "vm_type": { - "$ref": "#/definitions/BasicVMType", - "title": "VM type", - "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" - }, - "name": { - "type": "string", - "minLength": 1, - "maxLength": 15, - "pattern": "^\\S+$", - "title": "VM name", - "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" - }, - "cpu_affinity": { - "$ref": "#/definitions/CPUAffinityConfiguration", - "title": "Physical CPU affinity", - "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" - }, - "memory": { - "$ref": "#/definitions/BasicMemoryInfo", - "title": "memory", - "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" - }, - "os_config": { - "$ref": "#/definitions/OSConfigurations", - "title": "os_config", - "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" - }, - "console_vuart": { - "$ref": "#/definitions/ConsoleVuartConfiguration", - "default": "None", - "title": "Console virtual UART type", - "description": "
\n

\n 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).\n

\n
\n" - }, - "mmio_resources": { - "$ref": "#/definitions/MMIOResourcesConfiguration", - "title": "mmio_resources", - "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" - }, - "pci_devs": { - "$ref": "#/definitions/PCIDevsConfiguration", - "title": "PCI device assignment", - "description": "" - }, - "os_type": { - "$ref": "#/definitions/OSType", - "default": "Non-Windows OS", - "title": "OS type", - "description": "
\n

\n Select the OS type for this VM. This is required to run Windows in a User VM. See\n \n Device Model Parameters\n \n for how to include this in the Device Model arguments.\n

\n
\n" - }, - "vbootloader": { - "$ref": "#/definitions/EnablementType", - "default": "Enable", - "title": "OVMF (Open Virtual Machine Firmware)", - "description": "
\n

\n Use virtual bootloader OVMF (Open Virtual Machine Firmware) to boot this VM.\n

\n
\n" - }, - "vuart0": { - "$ref": "#/definitions/EnablementType", - "default": "Enable", - "title": "Emulate COM1 as stdio I/O in Device Model", - "description": "
\n

\n 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.\n

\n
\n" - }, - "usb_xhci": { - "type": "string", - "pattern": "^([\\d]+-[\\d]+){0,1}(:[\\d]+-[\\d]+)*$", - "title": "Virtual USB host controller interface", - "description": "
\n

\n 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.\n

\n
\n" - }, - "virtio_devices": { - "type": "object", - "properties": { - "console": { - "type": "string", - "title": "console", - "description": "
\n
\n
\n The virtio console device setting.Input format:\n
\n
\n

\n \n \n [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]\n \n \n

\n
\n
\n
\n" - }, - "network": { - "type": "string", - "title": "network", - "description": "
\n
\n
\n The virtio network device setting.\n
\n
\n

\n Input format:\n \n \n device_name[,vhost][,mac=XX:XX:XX:XX:XX:XX]\n \n \n .\nThe\n \n device_name\n \n is the name of the TAP (or MacVTap) device.\nIt must include the keyword\n \n tap\n \n .\n \n vhost\n \n specifies the\nvhost backend; otherwise, the VBSU backend is used. The\n \n mac\n \n address is optional.\n

\n
\n
\n
\n" - }, - "input": { - "type": "string", - "title": "input", - "description": "
\n

\n The virtio input device setting.\n

\n
\n" - }, - "block": { - "type": "string", - "title": "block", - "description": "
\n
\n
\n The virtio block device setting.\n
\n
\n

\n Format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img\n

\n
\n
\n
\n" - } - }, - "title": "Virt-IO devices", - "description": "
\n

\n Enable virt-IO devices in post-launched VMs.\n

\n
\n" - } - } - }, - "PreLaunchedVMBasicConfigType": { - "type": "object", - "required": [ - "vm_type", - "name", - "console_vuart" - ], - "properties": { - "vm_type": { - "$ref": "#/definitions/BasicVMType", - "title": "VM type", - "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" - }, - "name": { - "type": "string", - "minLength": 1, - "maxLength": 15, - "pattern": "^\\S+$", - "title": "VM name", - "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" - }, - "cpu_affinity": { - "$ref": "#/definitions/CPUAffinityConfiguration", - "title": "Physical CPU affinity", - "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" - }, - "os_config": { - "$ref": "#/definitions/OSConfigurations", - "title": "os_config", - "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" - }, - "console_vuart": { - "$ref": "#/definitions/ConsoleVuartConfiguration", - "default": "None", - "title": "Console virtual UART type", - "description": "
\n

\n 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).\n

\n
\n" - }, - "mmio_resources": { - "$ref": "#/definitions/MMIOResourcesConfiguration", - "title": "mmio_resources", - "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" - }, - "pci_devs": { - "$ref": "#/definitions/PCIDevsConfiguration", - "title": "PCI device assignment", - "description": "" - } - } - }, - "ServiceVMBasicConfigType": { - "type": "object", - "required": [ - "vm_type", - "name", - "console_vuart" - ], - "properties": { - "vm_type": { - "$ref": "#/definitions/BasicVMType", - "title": "VM type", - "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" - }, - "name": { - "type": "string", - "minLength": 1, - "maxLength": 15, - "pattern": "^\\S+$", - "title": "VM name", - "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" - }, - "cpu_affinity": { - "$ref": "#/definitions/CPUAffinityConfiguration", - "title": "Physical CPU affinity", - "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" - }, - "os_config": { - "$ref": "#/definitions/OSConfigurations", - "title": "os_config", - "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" - }, - "console_vuart": { - "$ref": "#/definitions/ConsoleVuartConfiguration", - "default": "None", - "title": "Console virtual UART type", - "description": "
\n

\n 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).\n

\n
\n" - } - } - }, - "PostLaunchedVMBasicConfigType": { - "type": "object", - "required": [ - "vm_type", - "name", - "memory", - "console_vuart", - "os_type", - "vbootloader", - "vuart0", - "virtio_devices" - ], - "properties": { - "vm_type": { - "$ref": "#/definitions/BasicVMType", - "title": "VM type", - "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" - }, - "name": { - "type": "string", - "minLength": 1, - "maxLength": 15, - "pattern": "^\\S+$", - "title": "VM name", - "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" - }, - "cpu_affinity": { - "$ref": "#/definitions/CPUAffinityConfiguration", - "title": "Physical CPU affinity", - "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" - }, - "memory": { - "$ref": "#/definitions/PostLaunchedMemoryInfo", - "title": "memory", - "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" - }, - "console_vuart": { - "$ref": "#/definitions/ConsoleVuartConfiguration", - "default": "None", - "title": "Console virtual UART type", - "description": "
\n

\n 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).\n

\n
\n" - }, - "mmio_resources": { - "$ref": "#/definitions/PostLaunchedMMIOResourcesConfiguration", - "title": "mmio_resources", - "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" - }, - "pci_devs": { - "$ref": "#/definitions/PCIDevsConfiguration", - "title": "PCI device assignment", - "description": "" - }, - "os_type": { - "$ref": "#/definitions/OSType", - "default": "Non-Windows OS", - "title": "OS type", - "description": "
\n

\n Select the OS type for this VM. This is required to run Windows in a User VM. See\n \n Device Model Parameters\n \n for how to include this in the Device Model arguments.\n

\n
\n" - }, - "vbootloader": { - "$ref": "#/definitions/EnablementType", - "default": "Enable", - "title": "OVMF (Open Virtual Machine Firmware)", - "description": "
\n

\n Use virtual bootloader OVMF (Open Virtual Machine Firmware) to boot this VM.\n

\n
\n" - }, - "vuart0": { - "$ref": "#/definitions/EnablementType", - "default": "Enable", - "title": "Emulate COM1 as stdio I/O in Device Model", - "description": "
\n

\n 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.\n

\n
\n" - }, - "usb_xhci": { - "type": "string", - "pattern": "^([\\d]+-[\\d]+){0,1}(:[\\d]+-[\\d]+)*$", - "title": "Virtual USB host controller interface", - "description": "
\n

\n 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.\n

\n
\n" - }, - "virtio_devices": { - "type": "object", - "properties": { - "console": { - "type": "string", - "title": "console", - "description": "
\n
\n
\n The virtio console device setting.Input format:\n
\n
\n

\n \n \n [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]\n \n \n

\n
\n
\n
\n" - }, - "network": { - "type": "string", - "title": "network", - "description": "
\n
\n
\n The virtio network device setting.\n
\n
\n

\n Input format:\n \n \n device_name[,vhost][,mac=XX:XX:XX:XX:XX:XX]\n \n \n .\nThe\n \n device_name\n \n is the name of the TAP (or MacVTap) device.\nIt must include the keyword\n \n tap\n \n .\n \n vhost\n \n specifies the\nvhost backend; otherwise, the VBSU backend is used. The\n \n mac\n \n address is optional.\n

\n
\n
\n
\n" - }, - "input": { - "type": "string", - "title": "input", - "description": "
\n

\n The virtio input device setting.\n

\n
\n" - }, - "block": { - "type": "string", - "title": "block", - "description": "
\n
\n
\n The virtio block device setting.\n
\n
\n

\n Format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img\n

\n
\n
\n
\n" - } - }, - "title": "Virt-IO devices", - "description": "
\n

\n Enable virt-IO devices in post-launched VMs.\n

\n
\n" - } - } - }, - "BasicFeatureOptionsType": { - "type": "object", - "required": [ - "IVSHMEM" - ], - "properties": { - "IVSHMEM": { - "$ref": "#/definitions/IVSHMEMInfo", - "title": "Inter-VM shared memory", - "description": "" - } - } - }, - "HVBasicConfigType": { - "type": "object", - "required": [ - "DEBUG_OPTIONS", - "FEATURES", - "vuart_connections" - ], - "properties": { - "DEBUG_OPTIONS": { - "$ref": "#/definitions/DebugOptionsType", - "title": "Debug options", - "description": "
\n

\n Configure the debug facilities.\n

\n
\n" - }, - "FEATURES": { - "$ref": "#/definitions/BasicFeatureOptionsType", - "title": "Hypervisor features", - "description": "
\n

\n Enable hypervisor features.\n

\n
\n" - }, - "vuart_connections": { - "$ref": "#/definitions/VuartConnectionsType", - "title": "Virtual UART connection", - "description": "
\n

\n Specify the vUART connection settings.\nRefer to\n \n Enable vUART Configurations\n \n for detailed vUART settings.\n

\n
\n" - } - } - }, - "AdvancedMemoryInfo": { - "type": "object", - "required": [ - "start_hpa" - ], - "properties": { - "start_hpa": { - "$ref": "#/definitions/HexFormat", - "default": "0x100000000", - "title": "start_hpa", - "description": "
\n

\n The starting physical address in host for the VM.\n

\n
\n" - }, - "size": { - "$ref": "#/definitions/MemorySizeType", - "default": "0x20000000", - "title": "size", - "description": "
\n

\n The memory size in bytes for the VM. Default value is\n \n 0x200000000\n \n .\n

\n
\n" - }, - "start_hpa2": { - "$ref": "#/definitions/HexFormat", - "default": "0x0", - "title": "start_hpa2", - "description": "
\n

\n Start of second HPA for non-contiguous allocations in host for the VM.\n

\n
\n" - }, - "size_hpa2": { - "$ref": "#/definitions/MemorySizeType", - "default": "0x0", - "title": "size_hpa2", - "description": "
\n

\n Memory size of second HPA for non-contiguous allocations in Bytes for the VM.\n

\n
\n" - } - } - }, - "VMAdvancedConfigType": { - "type": "object", - "required": [ - "clos", - "memory" - ], - "properties": { - "lapic_passthrough": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "LAPIC passthrough", - "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "io_completion_polling": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "I/O completion polling", - "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "nested_virtualization_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Nested virtualization", - "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" - }, - "virtual_cat_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Virtual Cache Allocation Technology (vCAT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "clos": { - "$ref": "#/definitions/CLOSConfiguration", - "title": "clos", - "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" - }, - "epc_section": { - "$ref": "#/definitions/EPCSection", - "title": "epc_section", - "description": "
\n

\n Specify the Intel Software Guard Extensions (SGX) enclave page cache (EPC) section settings.\n

\n
\n" - }, - "memory": { - "$ref": "#/definitions/AdvancedMemoryInfo", - "title": "memory", - "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" - }, - "pt_intx": { - "type": "string", - "title": "pt_intx", - "description": "
\n

\n Specify the pre-launched VM owned IOAPIC pins and the corresponding mapping between physical GSI and virtual GSI.\n

\n
\n" - }, - "PTM": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Precision Time Measurement", - "description": "
\n

\n 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.\n

\n
\n" - } - } - }, - "PreLaunchedVMAdvancedConfigType": { - "type": "object", - "required": [ - "clos", - "memory" - ], - "properties": { - "lapic_passthrough": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "LAPIC passthrough", - "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "io_completion_polling": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "I/O completion polling", - "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "nested_virtualization_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Nested virtualization", - "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" - }, - "virtual_cat_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Virtual Cache Allocation Technology (vCAT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "clos": { - "$ref": "#/definitions/CLOSConfiguration", - "title": "clos", - "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" - }, - "epc_section": { - "$ref": "#/definitions/EPCSection", - "title": "epc_section", - "description": "
\n

\n Specify the Intel Software Guard Extensions (SGX) enclave page cache (EPC) section settings.\n

\n
\n" - }, - "memory": { - "$ref": "#/definitions/PreLaunchedMemoryInfo", - "title": "memory", - "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" - }, - "pt_intx": { - "type": "string", - "title": "pt_intx", - "description": "
\n

\n Specify the pre-launched VM owned IOAPIC pins and the corresponding mapping between physical GSI and virtual GSI.\n

\n
\n" - }, - "PTM": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Precision Time Measurement", - "description": "
\n

\n 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.\n

\n
\n" - } - } - }, - "ServiceVMAdvancedConfigType": { - "type": "object", - "required": [ - "clos", - "memory" - ], - "properties": { - "lapic_passthrough": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "LAPIC passthrough", - "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "io_completion_polling": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "I/O completion polling", - "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "nested_virtualization_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Nested virtualization", - "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" - }, - "virtual_cat_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Virtual Cache Allocation Technology (vCAT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "clos": { - "$ref": "#/definitions/CLOSConfiguration", - "title": "clos", - "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" - }, - "memory": { - "$ref": "#/definitions/ServiceMemoryInfo", - "title": "memory", - "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" - } - } - }, - "PostLaunchedVMAdvancedConfigType": { - "type": "object", - "required": [ - "clos" - ], - "properties": { - "lapic_passthrough": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "LAPIC passthrough", - "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "io_completion_polling": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "I/O completion polling", - "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" - }, - "nested_virtualization_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Nested virtualization", - "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" - }, - "virtual_cat_support": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Virtual Cache Allocation Technology (vCAT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "clos": { - "$ref": "#/definitions/CLOSConfiguration", - "title": "clos", - "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" - }, - "PTM": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Precision Time Measurement", - "description": "
\n

\n 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.\n

\n
\n" - } - } - }, - "AdvancedFeatureOptionsType": { - "type": "object", - "required": [ - "RELOC", - "SCHEDULER", - "MULTIBOOT2", - "ENFORCE_TURNOFF_AC", - "ENFORCE_TURNOFF_GP", - "RDT", - "HYPERV_ENABLED", - "ACPI_PARSE_ENABLED", - "L1D_VMENTRY_ENABLED", - "MCE_ON_PSC_DISABLED" - ], - "properties": { - "RELOC": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Hypervisor relocation in memory", - "description": "
\n

\n Enable hypervisor relocation in memory. The bootloader may need to change the location of the hypervisor because of other firmware.\n

\n
\n" - }, - "SCHEDULER": { - "$ref": "#/definitions/SchedulerType", - "default": "SCHED_BVT", - "title": "Virtual CPU scheduler", - "description": "
\n

\n Select the scheduling algorithm used to determine which User VM runs on a shared virtual CPU.\n

\n
\n" - }, - "MULTIBOOT2": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Multiboot2", - "description": "
\n

\n Enable multiboot2 protocol support and multiboot1 downward compatibility. Disable this feature if multiboot1 meets your requirements and to reduce lines of code.\n

\n
\n" - }, - "ENFORCE_TURNOFF_AC": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Split lock detection", - "description": "
\n

\n Enable detection of split locks, which can negatively affect an application's real-time performance. If a lock is detected, an alignment check exception #AC occurs.\n

\n
\n" - }, - "ENFORCE_TURNOFF_GP": { - "$ref": "#/definitions/Boolean", - "default": "n", - "title": "Uncacheable-memory lock detection", - "description": "
\n

\n Enable detection of uncacheable-memory locks, which can negatively affect an application's real-time performance. If a lock is detected, a general-protection exception #GP occurs.\n

\n
\n" - }, - "RDT": { - "$ref": "#/definitions/RDTType", - "title": "Intel Resource Director Technology (RDT)", - "description": "
\n

\n 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.\n

\n
\n" - }, - "HYPERV_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Hyper-V virtualization technology", - "description": "
\n

\n Enable Microsoft Hyper-V Hypervisor Top-Level Functional Specification (TFLS) for Windows User VMs.\n

\n
\n" - }, - "ACPI_PARSE_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Parse ACPI tables at runtime", - "description": "
\n

\n 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.\n

\n
\n" - }, - "L1D_VMENTRY_ENABLED": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Mitigate L1 terminal fault", - "description": "
\n

\n Enable L1 cache flush before VM entry to prevent L1 terminal fault. L1 terminal fault is a hardware vulnerability that allows unauthorized disclosure of information residing in the L1 data cache.\n

\n
\n" - }, - "MCE_ON_PSC_DISABLED": { - "$ref": "#/definitions/Boolean", - "default": "y", - "title": "Machine Check Error (MCE) workaround", - "description": "
\n

\n Enable the software workaround for Machine Check Error on Page Size Change (hardware bug in some processor families).\n

\n
\n" - }, - "SSRAM": { - "$ref": "#/definitions/SSRAMInfo", - "title": "Software SRAM (for real-time apps)", - "description": "" - } - } - }, - "AdvancedMemoryOptionsType": { - "type": "object", - "required": [ - "STACK_SIZE" - ], - "properties": { - "STACK_SIZE": { - "$ref": "#/definitions/HexFormat", - "default": "0x2000", - "title": "CPU memory stack size (bytes per CPU)", - "description": "
\n

\n 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.\n

\n
\n" - } - } - }, - "AdvancedCapacitiesOptionsType": { - "type": "object", - "required": [ - "MAX_PCI_DEV_NUM", - "MAX_PT_IRQ_ENTRIES", - "MAX_MSIX_TABLE_NUM", - "MAX_EMULATED_MMIO" - ], - "properties": { - "MAX_PCI_DEV_NUM": { - "type": "integer", - "minimum": 1, - "maximum": 1024, - "default": 96, - "title": "Maximum number of PCI devices", - "description": "
\n

\n 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.\n

\n
\n" - }, - "MAX_PT_IRQ_ENTRIES": { - "type": "integer", - "default": 256, - "title": "Maximum number of IRQ entries for passthrough devices", - "description": "
\n

\n Specify the maximum number of interrupt request (IRQ) entries from all passthrough devices.\n

\n
\n" - }, - "MAX_MSIX_TABLE_NUM": { - "type": "integer", - "minimum": 1, - "maximum": 2048, - "default": 64, - "title": "Maximum number of MSI-X tables per device", - "description": "
\n

\n Specify the maximum number of Message Signaled Interrupt MSI-X tables per device. The default value is calculated from the board configuration file.\n

\n
\n" - }, - "MAX_EMULATED_MMIO": { - "type": "integer", - "minimum": 1, - "maximum": 128, - "default": 16, - "title": "Maximum number of emulated MMIO regions", - "description": "
\n

\n Specify the maximum number of emulated MMIO regions for device virtualization. The default value is calculated from the board configuration file.\n

\n
\n" - } - } - }, - "HVAdvancedConfigType": { - "type": "object", - "required": [ - "FEATURES", - "MEMORY", - "CAPACITIES" - ], - "properties": { - "FEATURES": { - "$ref": "#/definitions/AdvancedFeatureOptionsType", - "title": "Hypervisor features", - "description": "
\n

\n Enable hypervisor features.\n

\n
\n" - }, - "MEMORY": { - "$ref": "#/definitions/AdvancedMemoryOptionsType", - "title": "Memory options", - "description": "
\n

\n Configure memory used by the hypervisor.\n

\n
\n" - }, - "CAPACITIES": { - "$ref": "#/definitions/AdvancedCapacitiesOptionsType", - "title": "Hypervisor capacities", - "description": "
\n

\n Configure the capacities of the hypervisor.\n

\n
\n" - } - } - } - } +{ + "$schema": "http://json-schema.org/draft-07/schema", + "type": "object", + "required": [ + "acrn-config" + ], + "properties": { + "acrn-config": { + "$ref": "#/definitions/ACRNConfigType" + } + }, + "additionalProperties": true, + "definitions": { + "Boolean": { + "type": "string", + "enum": [ + "y", + "n" + ] + }, + "EnablementType": { + "type": "string", + "enum": [ + "Enable", + "Disable" + ] + }, + "HexFormat": { + "type": "string", + "pattern": "^0[Xx][0-9A-Fa-f]+|0$" + }, + "None": { + "type": "string", + "pattern": "^[*]{0}$" + }, + "BuildType": { + "type": "string", + "enum": [ + "release", + "debug" + ], + "enumNames": [ + "Release", + "Debug" + ] + }, + "KernLoadAddr": { + "anyOf": [ + { + "title": "None", + "type": "string", + "pattern": "^[*]{0}$" + }, + { + "title": "HexFormat", + "type": "string", + "pattern": "^0[Xx][0-9A-Fa-f]+|0$" + } + ] + }, + "KernEntryAddr": { + "anyOf": [ + { + "title": "None", + "type": "string", + "pattern": "^[*]{0}$" + }, + { + "title": "HexFormat", + "type": "string", + "pattern": "^0[Xx][0-9A-Fa-f]+|0$" + } + ] + }, + "MaxMsixTableNumType": { + "type": "integer", + "minimum": 1, + "maximum": 2048 + }, + "MaxMsixTableSizeType": { + "anyOf": [ + { + "title": "None", + "type": "string", + "pattern": "^[*]{0}$" + }, + { + "title": "MaxMsixTableNumType", + "type": "integer", + "minimum": 1, + "maximum": 2048 + } + ] + }, + "MemorySizeType": { + "anyOf": [ + { + "title": "HexFormat", + "type": "string", + "pattern": "^0[Xx][0-9A-Fa-f]+|0$" + } + ] + }, + "LogLevelType": { + "type": "string", + "enum": [ + "0", + "1", + "2", + "3", + "4", + "5" + ], + "enumNames": [ + "0: None", + "1: Critical", + "2: Error", + "3: Warning", + "4: Information", + "5: Debug" + ] + }, + "SchedulerType": { + "type": "string", + "enum": [ + "SCHED_NOOP", + "SCHED_IORR", + "SCHED_BVT", + "SCHED_PRIO" + ], + "enumNames": [ + "No-Operation (NOOP)", + "SCHED_IORR", + "Borrowed Virtual Time", + "Priority Based Scheduling" + ] + }, + "PriorityType": { + "type": "string", + "enum": [ + "PRIO_LOW", + "PRIO_HIGH" + ] + }, + "SerialConsoleType": { + "type": "string", + "pattern": "^.*ttyS[\\d]+$" + }, + "SerialConsoleOptions": { + "anyOf": [ + { + "title": "None", + "type": "string", + "pattern": "^[*]{0}$" + }, + { + "title": "SerialConsoleType", + "type": "string", + "pattern": "^.*ttyS[\\d]+$" + } + ] + }, + "VMNameType": { + "type": "string", + "pattern": "^([a-zA-Z0-9_\\-]){1,15}$" + }, + "VBDFType": { + "type": "string", + "pattern": "^[0-9A-Fa-f]{1,2}:[0-1][0-9A-Fa-f].[0-7]$" + }, + "ProviderType": { + "type": "string", + "enum": [ + "Hypervisor", + "Device Model" + ] + }, + "IVSHMEMSize": { + "type": "integer", + "enum": [ + 2, + 4, + 8, + 16, + 32, + 64, + 128, + 256, + 512 + ] + }, + "LoadOrderType": { + "type": "string", + "enum": [ + "SERVICE_VM", + "PRE_LAUNCHED_VM", + "POST_LAUNCHED_VM" + ] + }, + "VMType": { + "type": "string", + "enum": [ + "RTVM", + "STANDARD_VM", + "TEE_VM", + "REE_VM" + ], + "enumNames": [ + "Real-time", + "Standard", + "TEE_VM", + "REE_VM" + ] + }, + "VMKernelType": { + "type": "string", + "enum": [ + "KERNEL_BZIMAGE", + "KERNEL_RAWIMAGE", + "KERNEL_ELF" + ] + }, + "ConsoleVuartConfiguration": { + "type": "string", + "enum": [ + "None", + "COM Port 1", + "COM Port 2", + "COM Port 3", + "COM Port 4", + "PCI" + ] + }, + "VuartType": { + "type": "string", + "enum": [ + "legacy", + "pci" + ], + "enumNames": [ + "Legacy", + "PCI" + ] + }, + "OSType": { + "type": "string", + "enum": [ + "Non-Windows OS", + "Windows OS" + ] + }, + "BasicVMType": { + "type": "string", + "enum": [ + "RTVM", + "STANDARD_VM" + ], + "enumNames": [ + "Real-time", + "Standard" + ] + }, + "IVSHMEMVM": { + "type": "object", + "required": [ + "VM_NAME", + "VBDF" + ], + "properties": { + "VM_NAME": { + "$ref": "#/definitions/VMNameType", + "title": "Shared VMs", + "description": "
\n

\n Name of the VM that uses this shared memory region.\n

\n
\n" + }, + "VBDF": { + "$ref": "#/definitions/VBDFType", + "title": "Virtual BDF", + "description": "
\n

\n Virtual BDF (Bus Device Function) is automatically assigned and can be changed if needed. Set in Hex.\n

\n
\n" + } + } + }, + "IVSHMEMVMS": { + "type": "object", + "required": [ + "IVSHMEM_VM" + ], + "properties": { + "IVSHMEM_VM": { + "items": { + "$ref": "#/definitions/IVSHMEMVM" + }, + "type": "array", + "title": "IVSHMEM_VM", + "description": "
\n

\n Select all VMs that use the shared memory region.\n

\n
\n" + } + } + }, + "IVSHMEMRegionType": { + "type": "object", + "required": [ + "NAME", + "PROVIDED_BY", + "IVSHMEM_SIZE", + "IVSHMEM_VMS" + ], + "properties": { + "NAME": { + "type": "string", + "pattern": "^\\w+$", + "title": "Name", + "description": "
\n

\n Name of the shared memory region.\n

\n
\n" + }, + "PROVIDED_BY": { + "$ref": "#/definitions/ProviderType", + "default": "Hypervisor", + "title": "Emulated by", + "description": "
\n

\n Whether the shared memory region is emulated by the hypervisor or Device Model.\n

\n
\n" + }, + "IVSHMEM_SIZE": { + "$ref": "#/definitions/IVSHMEMSize", + "default": 2, + "title": "Size (MB)", + "description": "
\n

\n Select the size of the shared memory region\nin megabytes. The value should be a power of 2\nand no more than 512.\n

\n
\n" + }, + "IVSHMEM_VMS": { + "$ref": "#/definitions/IVSHMEMVMS", + "title": "Shared VMs", + "description": "
\n

\n Select all VMs that use the shared memory region.\n

\n
\n" + } + } + }, + "IVSHMEMInfo": { + "type": "object", + "properties": { + "IVSHMEM_REGION": { + "items": { + "$ref": "#/definitions/IVSHMEMRegionType" + }, + "type": "array", + "title": "IVSHMEM_REGION", + "description": "
\n

\n Create a memory region for VMs to share: specify its name, size, and associated VMs.\n

\n
\n" + } + } + }, + "RDTType": { + "type": "object", + "required": [ + "RDT_ENABLED", + "CDP_ENABLED", + "VCAT_ENABLED" + ], + "properties": { + "RDT_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Intel Resource Director Tech", + "description": "
\n

\n Enable Intel Resource Director Technology (RDT). If\nthe board hardware does not support\nRDT, setting this option to\n \n y\n \n is ignored.\n

\n
\n" + }, + "CDP_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Code and Data Prioritization", + "description": "
\n

\n Enable Code and Data Prioritization (CDP). CDP provides control over code and data placement in cache to improve an application's real-time performance.\n

\n
\n" + }, + "VCAT_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Virtual Cache Allocation Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "CLOS_MASK": { + "type": "array", + "items": { + "type": "string" + }, + "title": "CLOS_MASK", + "description": "
\n

\n Specify the cache capacity bitmask for the CLOS; only continuous '1' bits\nare allowed. The value will be ignored when hardware does not support RDT.\nThis option takes effect only if\n \n hv.FEATURES.RDT.RDT_ENABLED\n \n is set to\n \n y\n \n .\nAs\n \n vm.clos.vcpu_clos\n \n specifies the index of the CLOS to be associated with the given vCPU,\n \n hv.FEATURES.RDT.CLOS_MASK\n \n of that CLOS would impact the performance of the given vCPU.\n

\n
\n" + }, + "MBA_DELAY": { + "type": "array", + "items": { + "type": "string" + }, + "title": "MBA_DELAY", + "description": "
\n

\n Memory Bandwidth Allocation delay value.\n

\n
\n" + } + } + }, + "SSRAMInfo": { + "type": "object", + "required": [ + "SSRAM_ENABLED" + ], + "properties": { + "SSRAM_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Software SRAM", + "description": "
\n

\n Enable Software SRAM. This feature reserves memory buffers as always-cached memory to improve an application's real-time performance.\n

\n
\n" + } + } + }, + "CPUAffinityConfiguration": { + "type": "object", + "required": [ + "pcpu_id" + ], + "properties": { + "pcpu_id": { + "type": "array", + "items": { + "type": "integer", + "default": 2 + }, + "title": "pcpu_id", + "description": "
\n

\n A pCPU that this VM's vCPU is allowed to pin\nto.\n

\n
\n" + } + } + }, + "CLOSConfiguration": { + "type": "object", + "required": [ + "vcpu_clos" + ], + "properties": { + "vcpu_clos": { + "type": "array", + "items": { + "type": "integer", + "default": 0 + }, + "title": "vcpu_clos", + "description": "
\n

\n By default (\n \n virtual_cat_support\n \n is not specified):\nvcpu_clos is per-CPU and it configures each CPU in VMs to a desired CLOS ID in the\n \n VM\n \n section of the\nscenario file. Follow\n \n RDT Detection and Resource Capabilities\n \n to identify the maximum supported CLOS ID that can be used.\n

\n

\n If\n \n virtual_cat_support\n \n is specified:\nvcpu_clos is not per-CPU anymore, just a list of physical CLOSIDs (minimum 2) that are assigned to VMs\nfor vCAT use. Each vcpu_clos will be mapped to a virtual CLOSID, the first vcpu_clos is mapped to virtual\nCLOSID 0 and the second is mapped to virtual CLOSID 1, etc.\n

\n
\n" + } + } + }, + "EPCSection": { + "type": "object", + "required": [ + "base", + "size" + ], + "properties": { + "base": { + "$ref": "#/definitions/HexFormat", + "default": 0, + "title": "EPC section base", + "description": "
\n

\n Specify the enclave page cache (EPC) section base for Intel Software Guard Extensions (SGX). Must be page aligned.\n

\n
\n" + }, + "size": { + "$ref": "#/definitions/HexFormat", + "default": 0, + "title": "EPC section size (bytes)", + "description": "
\n

\n Specify the enclave page cache (EPC) section size in bytes for Intel Software Guard Extensions (SGX). Must be page aligned.\n

\n
\n" + } + } + }, + "MemoryInfo": { + "type": "object", + "required": [ + "whole", + "start_hpa" + ], + "properties": { + "whole": { + "type": "integer", + "default": 256, + "title": "Memory size (MB)", + "description": "
\n

\n Specify the physical memory size allocated to this VM in megabytes.\n

\n
\n" + }, + "start_hpa": { + "$ref": "#/definitions/HexFormat", + "default": "0x100000000", + "title": "start_hpa", + "description": "
\n

\n The starting physical address in host for the VM.\n

\n
\n" + }, + "size": { + "$ref": "#/definitions/MemorySizeType", + "default": "0x20000000", + "title": "size", + "description": "
\n

\n The memory size in bytes for the VM. Default value is\n \n 0x200000000\n \n .\n

\n
\n" + }, + "start_hpa2": { + "$ref": "#/definitions/HexFormat", + "default": "0x0", + "title": "start_hpa2", + "description": "
\n

\n Start of second HPA for non-contiguous allocations in host for the VM.\n

\n
\n" + }, + "size_hpa2": { + "$ref": "#/definitions/MemorySizeType", + "default": "0x0", + "title": "size_hpa2", + "description": "
\n

\n Memory size of second HPA for non-contiguous allocations in Bytes for the VM.\n

\n
\n" + } + } + }, + "OSConfigurations": { + "type": "object", + "required": [ + "kern_type", + "kern_mod" + ], + "properties": { + "kern_type": { + "$ref": "#/definitions/VMKernelType", + "title": "Kernel image type", + "description": "
\n

\n Select the kernel image type so that the hypervisor can load it correctly.\n

\n
\n" + }, + "kern_mod": { + "type": "string", + "title": "Kernel module tag", + "description": "
\n

\n Specify the tag for the kernel image that is used as a multiboot module. The tag's spelling must exactly match the module tag in the GRUB multiboot cmdline.\n

\n
\n" + }, + "ramdisk_mod": { + "type": "string", + "title": "RAMdisk module tag", + "description": "
\n

\n Specify the tag for the RAMdisk image that is used as a multiboot module. The tag's spelling must exactly match the module tag in the GRUB multiboot cmdline.\n

\n
\n" + }, + "bootargs": { + "type": "string", + "title": "Kernel command-line parameters", + "description": "
\n

\n Specify the command-line parameters that will be used to boot the kernel for this VM. See\n \n Linux documentation\n \n for a list of parameters.\n

\n
\n" + }, + "kern_load_addr": { + "$ref": "#/definitions/KernLoadAddr", + "title": "kern_load_addr", + "description": "
\n

\n The loading address in host memory for the VM kernel.\n

\n
\n" + }, + "kern_entry_addr": { + "$ref": "#/definitions/KernEntryAddr", + "title": "kern_entry_addr", + "description": "
\n

\n The entry address in host memory for the VM kernel.\n

\n
\n" + } + } + }, + "VuartEndpointType": { + "type": "object", + "required": [ + "vm_name", + "io_port" + ], + "properties": { + "vm_name": { + "type": "string", + "title": "Virtual UART port", + "description": "
\n

\n Virtual UART port\n

\n
\n" + }, + "io_port": { + "$ref": "#/definitions/HexFormat", + "default": "0x3F", + "title": "Virtual I/O address", + "description": "
\n

\n Specify the COM base for each legacy virtual UART.\n

\n
\n" + }, + "vbdf": { + "items": { + "$ref": "#/definitions/VBDFType" + }, + "type": "array", + "maxItems": 1, + "title": "Virtual BDF", + "description": "
\n

\n Specify the virtual Bus:Device.Function (BDF) for each PCI virtual UART. Virtual BDF is automatically assigned when the configuration is saved and can be changed if needed.\n

\n
\n" + } + } + }, + "VuartConnectionType": { + "type": "object", + "required": [ + "name", + "type", + "endpoint" + ], + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/VuartType", + "default": "legacy", + "title": "Type", + "description": "
\n

\n Select the communication virtual UART (vUART) type.\n

\n
\n" + }, + "endpoint": { + "minItems": 2, + "items": { + "$ref": "#/definitions/VuartEndpointType" + }, + "type": "array", + "maxItems": 2 + } + } + }, + "VuartConnectionsType": { + "type": "object", + "properties": { + "vuart_connection": { + "items": { + "$ref": "#/definitions/VuartConnectionType" + }, + "type": "array" + } + } + }, + "MMIOResourcesConfiguration": { + "type": "object", + "properties": { + "TPM2": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "TPM2 passthrough", + "description": "
\n

\n Enable passthrough of the trusted platform module (TPM2) device to this VM.\n

\n
\n" + }, + "p2sb": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "P2SB bridge passthrough", + "description": "
\n

\n Enable passthrough of the Primary-to-Sideband (P2SB) bridge register access BAR to this VM.\n

\n
\n" + } + } + }, + "PCIDevsConfiguration": { + "type": "object", + "properties": { + "pci_dev": { + "type": "array", + "items": { + "type": "string" + }, + "title": "PCI device assignment", + "description": "
\n

\n Select the PCI devices you want to assign to this virtual machine.\n

\n
\n", + "enum": { + "type": "dynamicEnum", + "function": "get_enum", + "source": "board_xml", + "selector": "//device[class]/@description", + "sorted": "lambda s: (s.split(' ', maxsplit=1)[-1].split(':')[0], s.split(' ')[0])" + } + } + } + }, + "DebugOptionsType": { + "type": "object", + "required": [ + "BUILD_TYPE", + "SERIAL_CONSOLE", + "MEM_LOGLEVEL", + "NPK_LOGLEVEL", + "CONSOLE_LOGLEVEL" + ], + "properties": { + "BUILD_TYPE": { + "$ref": "#/definitions/BuildType", + "default": "debug", + "title": "Build type", + "description": "
\n

\n Select the build type:\n

\n \n

\n These settings can only be changed at build time.\n

\n
\n" + }, + "SERIAL_CONSOLE": { + "$ref": "#/definitions/SerialConsoleOptions", + "title": "Serial console port", + "description": "
\n

\n Select the host serial device used for hypervisor debugging.\n

\n
\n", + "enum": { + "type": "dynamicEnum", + "function": "get_enum", + "source": "board_xml", + "selector": "//ttys/serial[type != '0']/dev_path/text()", + "sorted": null + } + }, + "MEM_LOGLEVEL": { + "$ref": "#/definitions/LogLevelType", + "default": 0, + "title": "ACRN log level", + "description": "
\n

\n 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.\n

\n
\n" + }, + "NPK_LOGLEVEL": { + "$ref": "#/definitions/LogLevelType", + "default": 0, + "title": "Intel Trace Hub log level", + "description": "
\n

\n 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.\n

\n
\n" + }, + "CONSOLE_LOGLEVEL": { + "$ref": "#/definitions/LogLevelType", + "default": 0, + "title": "Serial console log level", + "description": "
\n

\n Select the default log level for log messages written to the serial console. Log messages with the selected value or lower are displayed.\n

\n
\n" + } + } + }, + "FeatureOptionsType": { + "type": "object", + "required": [ + "RELOC", + "SCHEDULER", + "MULTIBOOT2", + "ENFORCE_TURNOFF_AC", + "ENFORCE_TURNOFF_GP", + "SECURITY_VM_FIXUP", + "KEEP_IRQ_DISABLED", + "RDT", + "HYPERV_ENABLED", + "IOMMU_ENFORCE_SNP", + "ACPI_PARSE_ENABLED", + "L1D_VMENTRY_ENABLED", + "MCE_ON_PSC_DISABLED", + "IVSHMEM" + ], + "properties": { + "RELOC": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Hypervisor relocation", + "description": "
\n

\n Enable hypervisor relocation in memory. The bootloader may need to change the location of the hypervisor because of other firmware.\n

\n
\n" + }, + "SCHEDULER": { + "$ref": "#/definitions/SchedulerType", + "default": "SCHED_BVT", + "title": "Virtual CPU scheduler", + "description": "
\n

\n Select the scheduling algorithm for determining the priority of User VMs running on a shared virtual CPU.\n

\n
\n" + }, + "MULTIBOOT2": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Multiboot2", + "description": "
\n

\n Enable multiboot2 protocol support (with multiboot1 downward compatibility). If multiboot1 meets your requirements, disable this feature to reduce hypervisor code size.\n

\n
\n" + }, + "ENFORCE_TURNOFF_AC": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Split lock detection", + "description": "
\n

\n 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.\n

\n
\n" + }, + "ENFORCE_TURNOFF_GP": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "UC lock detection", + "description": "
\n

\n 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.\n

\n
\n" + }, + "SECURITY_VM_FIXUP": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "SECURITY_VM_FIXUP", + "description": "
\n

\n Enable to do fixup for TPM2 and SMBIOS for Security VM. If no Security VM, setting this option to\n \n n\n \n

\n
\n" + }, + "KEEP_IRQ_DISABLED": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "KEEP_IRQ_DISABLED", + "description": "
\n

\n If\n \n y\n \n , permanently disables all interrupts in HV root mode.\n

\n
\n" + }, + "RDT": { + "$ref": "#/definitions/RDTType", + "title": "Intel Resource Director Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "HYPERV_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Hyper-V", + "description": "
\n

\n Enable Microsoft Hyper-V Hypervisor Top-Level Functional Specification (TFLS) for User VMs running Windows.\n

\n
\n" + }, + "IOMMU_ENFORCE_SNP": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "IOMMU_ENFORCE_SNP", + "description": "
\n

\n Specify if the IOMMU enforces snoop behavior of DMA operations.\n

\n
\n" + }, + "ACPI_PARSE_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Parse ACPI tables", + "description": "
\n

\n 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.\n

\n
\n" + }, + "L1D_VMENTRY_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Mitigate L1 terminal fault", + "description": "
\n

\n 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.\n

\n
\n" + }, + "MCE_ON_PSC_DISABLED": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "MCE workaround", + "description": "
\n

\n Enable the software workaround for Machine Check Error on Page Size Change (erratum in some processor families).\n

\n
\n" + }, + "IVSHMEM": { + "$ref": "#/definitions/IVSHMEMInfo", + "title": "Inter-VM shared memory", + "description": "
\n

\n Configure shared memory regions for inter-VM communication.\n

\n
\n" + }, + "SSRAM": { + "$ref": "#/definitions/SSRAMInfo", + "title": "Software SRAM", + "description": "
\n

\n Configure Software SRAM. This feature reserves memory buffers as always-cached memory to improve an application's real-time performance.\n

\n
\n" + } + } + }, + "MemoryOptionsType": { + "type": "object", + "required": [ + "STACK_SIZE", + "HV_RAM_START" + ], + "properties": { + "STACK_SIZE": { + "$ref": "#/definitions/HexFormat", + "default": "0x2000", + "title": "CPU memory stack size (bytes)", + "description": "
\n

\n 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.\n

\n
\n" + }, + "HV_RAM_START": { + "$ref": "#/definitions/HexFormat", + "default": "0x00400000", + "title": "HV_RAM_START", + "description": "
\n

\n The 2MB-aligned starting physical address of the RAM region used by the hypervisor.\n

\n
\n" + } + } + }, + "CapacitiesOptionsType": { + "type": "object", + "required": [ + "MAX_VM_NUM", + "MAX_IOAPIC_NUM", + "MAX_PCI_DEV_NUM", + "MAX_IOAPIC_LINES", + "MAX_PT_IRQ_ENTRIES", + "MAX_MSIX_TABLE_NUM", + "MAX_EMULATED_MMIO" + ], + "properties": { + "MAX_VM_NUM": { + "type": "integer", + "default": 16, + "title": "MAX_VM_NUM", + "description": "
\n

\n Maximum number of User VMs allowed.\n

\n
\n" + }, + "MAX_IOAPIC_NUM": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "default": 1, + "title": "MAX_IOAPIC_NUM", + "description": "
\n

\n Maximum number of IOAPICs.\n

\n
\n" + }, + "MAX_PCI_DEV_NUM": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "default": 96, + "title": "Max PCI devices", + "description": "
\n

\n 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.\n

\n
\n" + }, + "MAX_IOAPIC_LINES": { + "type": "integer", + "minimum": 1, + "maximum": 120, + "default": 120, + "title": "MAX_IOAPIC_LINES", + "description": "
\n

\n Maximum number of interrupt lines per IOAPIC.\n

\n
\n" + }, + "MAX_PT_IRQ_ENTRIES": { + "type": "integer", + "default": 256, + "title": "Max passthrough IRQ entries", + "description": "
\n

\n Specify the maximum number of interrupt request (IRQ) entries from all passthrough devices.\n

\n
\n" + }, + "MAX_MSIX_TABLE_NUM": { + "type": "integer", + "minimum": 1, + "maximum": 2048, + "default": 64, + "title": "Max MSI-X tables", + "description": "
\n

\n Specify the maximum number of Message Signaled Interrupt MSI-X tables per device. The default value is calculated from the board configuration file.\n

\n
\n" + }, + "MAX_EMULATED_MMIO": { + "type": "integer", + "minimum": 1, + "maximum": 128, + "default": 16, + "title": "Max emulated MMIO regions", + "description": "
\n

\n Specify the maximum number of emulated MMIO regions for device virtualization. The default value is calculated from the board configuration file.\n

\n
\n" + } + } + }, + "MiscCfgOptionsType": { + "type": "object", + "required": [ + "GPU_SBDF" + ], + "properties": { + "GPU_SBDF": { + "$ref": "#/definitions/HexFormat", + "default": "0x00000010", + "title": "GPU_SBDF", + "description": "
\n

\n Segment, Bus, Device, and function of the GPU.\n

\n
\n" + } + } + }, + "HVConfigType": { + "type": "object", + "required": [ + "DEBUG_OPTIONS", + "FEATURES", + "MEMORY", + "CAPACITIES", + "MISC_CFG", + "vuart_connections" + ], + "properties": { + "DEBUG_OPTIONS": { + "$ref": "#/definitions/DebugOptionsType", + "title": "Debug options", + "description": "
\n

\n Configure the debug facilities.\n

\n
\n" + }, + "FEATURES": { + "$ref": "#/definitions/FeatureOptionsType", + "title": "Hypervisor features", + "description": "
\n

\n Enable hypervisor features.\n

\n
\n" + }, + "MEMORY": { + "$ref": "#/definitions/MemoryOptionsType", + "title": "Memory options", + "description": "
\n

\n Configure memory used by the hypervisor.\n

\n
\n" + }, + "CAPACITIES": { + "$ref": "#/definitions/CapacitiesOptionsType", + "title": "Hypervisor capacities", + "description": "
\n

\n Configure the capacities of the hypervisor.\n

\n
\n" + }, + "MISC_CFG": { + "$ref": "#/definitions/MiscCfgOptionsType", + "title": "MISC_CFG", + "description": "
\n

\n Miscellaneous options for workarounds.\n

\n
\n" + }, + "vuart_connections": { + "$ref": "#/definitions/VuartConnectionsType", + "title": "Inter-VM virtual UART connection", + "description": "
\n

\n Specify the vUART connection settings.\nRefer to\n \n Enable vUART Configurations\n \n for detailed vUART settings.\n

\n
\n" + } + } + }, + "VMConfigType": { + "type": "object", + "required": [ + "load_order", + "vm_type", + "name", + "clos", + "memory", + "priority", + "companion_vmid", + "console_vuart", + "os_type", + "vbootloader", + "vuart0", + "virtio_devices" + ], + "properties": { + "load_order": { + "$ref": "#/definitions/LoadOrderType", + "title": "Load order", + "description": "
\n

\n Specify the load_order.\n

\n
\n" + }, + "vm_type": { + "$ref": "#/definitions/VMType", + "title": "VM type", + "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 15, + "pattern": "^\\S+$", + "title": "VM name", + "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" + }, + "lapic_passthrough": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "LAPIC passthrough", + "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "io_completion_polling": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "I/O completion polling", + "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "nested_virtualization_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Nested virtualization", + "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" + }, + "virtual_cat_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Virtual Cache Allocation Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "secure_world_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "secure_world_support", + "description": "
\n

\n Specify secure world support for trusty OS.\n

\n
\n" + }, + "hide_mtrr_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "hide_mtrr_support", + "description": "
\n

\n Specify MTRR capability to hide for VM.\n

\n
\n" + }, + "security_vm": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "security_vm", + "description": "
\n

\n Specify TPM2 FIXUP for VM.\n

\n
\n" + }, + "cpu_affinity": { + "$ref": "#/definitions/CPUAffinityConfiguration", + "title": "Physical CPU affinity", + "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" + }, + "clos": { + "$ref": "#/definitions/CLOSConfiguration", + "title": "clos", + "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" + }, + "epc_section": { + "$ref": "#/definitions/EPCSection", + "title": "epc_section", + "description": "
\n

\n Specify the Intel Software Guard Extensions (SGX) enclave page cache (EPC) section settings.\n

\n
\n" + }, + "memory": { + "$ref": "#/definitions/MemoryInfo", + "title": "memory", + "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" + }, + "priority": { + "$ref": "#/definitions/PriorityType", + "default": "PRIO_LOW", + "title": "priority", + "description": "
\n

\n Specify the VM vCPU priority for scheduling.\n

\n
\n" + }, + "companion_vmid": { + "type": "integer", + "default": 65535, + "title": "companion_vmid", + "description": "
\n

\n Specify the companion VM id of this VM.\n

\n
\n" + }, + "os_config": { + "$ref": "#/definitions/OSConfigurations", + "title": "os_config", + "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" + }, + "console_vuart": { + "$ref": "#/definitions/ConsoleVuartConfiguration", + "default": "None", + "title": "Console virtual UART type", + "description": "
\n

\n 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).\n

\n
\n" + }, + "mmio_resources": { + "$ref": "#/definitions/MMIOResourcesConfiguration", + "title": "mmio_resources", + "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" + }, + "pt_intx": { + "type": "string", + "title": "pt_intx", + "description": "
\n

\n Specify the pre-launched VM owned IOAPIC pins and the corresponding mapping between physical GSI and virtual GSI.\n

\n
\n" + }, + "pci_devs": { + "$ref": "#/definitions/PCIDevsConfiguration", + "title": "PCI device assignment", + "description": "" + }, + "PTM": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Precision Time Measurement", + "description": "
\n

\n 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.\n

\n
\n" + }, + "os_type": { + "$ref": "#/definitions/OSType", + "default": "Non-Windows OS", + "title": "OS type", + "description": "
\n

\n Select the OS type for this VM. This is required to run Windows in a User VM. See\n \n Device Model Parameters\n \n for how to include this in the Device Model arguments.\n

\n
\n" + }, + "vbootloader": { + "$ref": "#/definitions/EnablementType", + "default": "Enable", + "title": "Open Virtual Machine Firmware", + "description": "
\n

\n Use virtual bootloader OVMF (Open Virtual Machine Firmware) to boot this VM.\n

\n
\n" + }, + "vuart0": { + "$ref": "#/definitions/EnablementType", + "default": "Enable", + "title": "Emulate COM1 as stdio I/O", + "description": "
\n

\n 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.\n

\n
\n" + }, + "usb_xhci": { + "type": "string", + "pattern": "^([\\d]+-[\\d]+){0,1}(:[\\d]+-[\\d]+)*$", + "title": "Virtual USB HCI", + "description": "
\n

\n 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.\n

\n
\n" + }, + "virtio_devices": { + "type": "object", + "properties": { + "console": { + "type": "string", + "title": "console", + "description": "
\n

\n The virtio console device setting. Input format:\n \n \n [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]\n \n \n

\n
\n" + }, + "network": { + "type": "string", + "title": "network", + "description": "
\n

\n The virtio network device setting.\nInput format:\n \n \n device_name[,vhost][,mac=XX:XX:XX:XX:XX:XX]\n \n \n .\nThe\n \n device_name\n \n is the name of the TAP (or MacVTap) device.\nIt must include the keyword\n \n tap\n \n .\n \n vhost\n \n specifies the\nvhost backend; otherwise, the VBSU backend is used. The\n \n mac\n \n address is optional.\n

\n
\n" + }, + "input": { + "type": "string", + "title": "input", + "description": "
\n

\n The virtio input device setting.\n

\n
\n" + }, + "block": { + "type": "string", + "title": "block", + "description": "
\n

\n The virtio block device setting.\nFormat:\n \n [blk\n \n partition:][img\n \n path]\n \n . Example:\n \n \n /dev/sda3:./a/b.img\n \n \n .\n

\n
\n" + } + }, + "title": "Virt-IO devices", + "description": "
\n

\n Enable virt-IO devices in post-launched VMs.\n

\n
\n" + } + } + }, + "ACRNConfigType": { + "type": "object", + "required": [ + "hv" + ], + "properties": { + "hv": { + "$ref": "#/definitions/HVConfigType", + "title": "hv", + "description": "
\n

\n The hypervisor configuration defines a working scenario and target\nboard by configuring the hypervisor image features and capabilities such as\nsetting up the log and the serial port.\n

\n
\n" + } + } + }, + "PreLaunchedMemoryInfo": { + "type": "object", + "required": [ + "start_hpa" + ], + "properties": { + "start_hpa": { + "$ref": "#/definitions/HexFormat", + "default": "0x100000000", + "title": "start_hpa", + "description": "
\n

\n The starting physical address in host for the VM.\n

\n
\n" + }, + "size": { + "$ref": "#/definitions/MemorySizeType", + "default": "0x20000000", + "title": "size", + "description": "
\n

\n The memory size in bytes for the VM. Default value is\n \n 0x200000000\n \n .\n

\n
\n" + }, + "start_hpa2": { + "$ref": "#/definitions/HexFormat", + "default": "0x0", + "title": "start_hpa2", + "description": "
\n

\n Start of second HPA for non-contiguous allocations in host for the VM.\n

\n
\n" + }, + "size_hpa2": { + "$ref": "#/definitions/MemorySizeType", + "default": "0x0", + "title": "size_hpa2", + "description": "
\n

\n Memory size of second HPA for non-contiguous allocations in Bytes for the VM.\n

\n
\n" + } + } + }, + "PreLaunchedVMConfigType": { + "type": "object", + "required": [ + "load_order", + "vm_type", + "name", + "clos", + "memory", + "priority", + "companion_vmid", + "console_vuart" + ], + "properties": { + "load_order": { + "$ref": "#/definitions/LoadOrderType", + "title": "Load order", + "description": "
\n

\n Specify the load_order.\n

\n
\n" + }, + "vm_type": { + "$ref": "#/definitions/VMType", + "title": "VM type", + "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 15, + "pattern": "^\\S+$", + "title": "VM name", + "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" + }, + "lapic_passthrough": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "LAPIC passthrough", + "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "io_completion_polling": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "I/O completion polling", + "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "nested_virtualization_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Nested virtualization", + "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" + }, + "virtual_cat_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Virtual Cache Allocation Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "secure_world_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "secure_world_support", + "description": "
\n

\n Specify secure world support for trusty OS.\n

\n
\n" + }, + "hide_mtrr_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "hide_mtrr_support", + "description": "
\n

\n Specify MTRR capability to hide for VM.\n

\n
\n" + }, + "security_vm": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "security_vm", + "description": "
\n

\n Specify TPM2 FIXUP for VM.\n

\n
\n" + }, + "cpu_affinity": { + "$ref": "#/definitions/CPUAffinityConfiguration", + "title": "Physical CPU affinity", + "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" + }, + "clos": { + "$ref": "#/definitions/CLOSConfiguration", + "title": "clos", + "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" + }, + "epc_section": { + "$ref": "#/definitions/EPCSection", + "title": "epc_section", + "description": "
\n

\n Specify the Intel Software Guard Extensions (SGX) enclave page cache (EPC) section settings.\n

\n
\n" + }, + "memory": { + "$ref": "#/definitions/PreLaunchedMemoryInfo", + "title": "memory", + "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" + }, + "priority": { + "$ref": "#/definitions/PriorityType", + "default": "PRIO_LOW", + "title": "priority", + "description": "
\n

\n Specify the VM vCPU priority for scheduling.\n

\n
\n" + }, + "companion_vmid": { + "type": "integer", + "default": 65535, + "title": "companion_vmid", + "description": "
\n

\n Specify the companion VM id of this VM.\n

\n
\n" + }, + "os_config": { + "$ref": "#/definitions/OSConfigurations", + "title": "os_config", + "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" + }, + "console_vuart": { + "$ref": "#/definitions/ConsoleVuartConfiguration", + "default": "None", + "title": "Console virtual UART type", + "description": "
\n

\n 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).\n

\n
\n" + }, + "mmio_resources": { + "$ref": "#/definitions/MMIOResourcesConfiguration", + "title": "mmio_resources", + "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" + }, + "pt_intx": { + "type": "string", + "title": "pt_intx", + "description": "
\n

\n Specify the pre-launched VM owned IOAPIC pins and the corresponding mapping between physical GSI and virtual GSI.\n

\n
\n" + }, + "pci_devs": { + "$ref": "#/definitions/PCIDevsConfiguration", + "title": "PCI device assignment", + "description": "" + }, + "PTM": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Precision Time Measurement", + "description": "
\n

\n 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.\n

\n
\n" + } + } + }, + "ServiceMemoryInfo": { + "type": "object", + "required": [ + "start_hpa" + ], + "properties": { + "start_hpa": { + "$ref": "#/definitions/HexFormat", + "default": "0x100000000", + "title": "start_hpa", + "description": "
\n

\n The starting physical address in host for the VM.\n

\n
\n" + }, + "size": { + "$ref": "#/definitions/MemorySizeType", + "default": "0x20000000", + "title": "size", + "description": "
\n

\n The memory size in bytes for the VM. Default value is\n \n 0x200000000\n \n .\n

\n
\n" + }, + "start_hpa2": { + "$ref": "#/definitions/HexFormat", + "default": "0x0", + "title": "start_hpa2", + "description": "
\n

\n Start of second HPA for non-contiguous allocations in host for the VM.\n

\n
\n" + }, + "size_hpa2": { + "$ref": "#/definitions/MemorySizeType", + "default": "0x0", + "title": "size_hpa2", + "description": "
\n

\n Memory size of second HPA for non-contiguous allocations in Bytes for the VM.\n

\n
\n" + } + } + }, + "ServiceVMConfigType": { + "type": "object", + "required": [ + "load_order", + "vm_type", + "name", + "clos", + "memory", + "priority", + "companion_vmid", + "console_vuart" + ], + "properties": { + "load_order": { + "$ref": "#/definitions/LoadOrderType", + "title": "Load order", + "description": "
\n

\n Specify the load_order.\n

\n
\n" + }, + "vm_type": { + "$ref": "#/definitions/VMType", + "title": "VM type", + "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 15, + "pattern": "^\\S+$", + "title": "VM name", + "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" + }, + "lapic_passthrough": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "LAPIC passthrough", + "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "io_completion_polling": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "I/O completion polling", + "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "nested_virtualization_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Nested virtualization", + "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" + }, + "virtual_cat_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Virtual Cache Allocation Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "secure_world_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "secure_world_support", + "description": "
\n

\n Specify secure world support for trusty OS.\n

\n
\n" + }, + "hide_mtrr_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "hide_mtrr_support", + "description": "
\n

\n Specify MTRR capability to hide for VM.\n

\n
\n" + }, + "security_vm": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "security_vm", + "description": "
\n

\n Specify TPM2 FIXUP for VM.\n

\n
\n" + }, + "cpu_affinity": { + "$ref": "#/definitions/CPUAffinityConfiguration", + "title": "Physical CPU affinity", + "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" + }, + "clos": { + "$ref": "#/definitions/CLOSConfiguration", + "title": "clos", + "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" + }, + "memory": { + "$ref": "#/definitions/ServiceMemoryInfo", + "title": "memory", + "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" + }, + "priority": { + "$ref": "#/definitions/PriorityType", + "default": "PRIO_LOW", + "title": "priority", + "description": "
\n

\n Specify the VM vCPU priority for scheduling.\n

\n
\n" + }, + "companion_vmid": { + "type": "integer", + "default": 65535, + "title": "companion_vmid", + "description": "
\n

\n Specify the companion VM id of this VM.\n

\n
\n" + }, + "os_config": { + "$ref": "#/definitions/OSConfigurations", + "title": "os_config", + "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" + }, + "console_vuart": { + "$ref": "#/definitions/ConsoleVuartConfiguration", + "default": "None", + "title": "Console virtual UART type", + "description": "
\n

\n 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).\n

\n
\n" + } + } + }, + "PostLaunchedMemoryInfo": { + "type": "object", + "required": [ + "whole" + ], + "properties": { + "whole": { + "type": "integer", + "default": 256, + "title": "Memory size (MB)", + "description": "
\n

\n Specify the physical memory size allocated to this VM in megabytes.\n

\n
\n" + } + } + }, + "PostLaunchedMMIOResourcesConfiguration": { + "type": "object", + "properties": { + "TPM2": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "TPM2 passthrough", + "description": "
\n

\n Enable passthrough of the trusted platform module (TPM2) device to this VM.\n

\n
\n" + } + } + }, + "PostLaunchedVMConfigType": { + "type": "object", + "required": [ + "load_order", + "vm_type", + "name", + "clos", + "memory", + "priority", + "companion_vmid", + "console_vuart", + "os_type", + "vbootloader", + "vuart0", + "virtio_devices" + ], + "properties": { + "load_order": { + "$ref": "#/definitions/LoadOrderType", + "title": "Load order", + "description": "
\n

\n Specify the load_order.\n

\n
\n" + }, + "vm_type": { + "$ref": "#/definitions/VMType", + "title": "VM type", + "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 15, + "pattern": "^\\S+$", + "title": "VM name", + "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" + }, + "lapic_passthrough": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "LAPIC passthrough", + "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "io_completion_polling": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "I/O completion polling", + "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "nested_virtualization_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Nested virtualization", + "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" + }, + "virtual_cat_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Virtual Cache Allocation Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "secure_world_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "secure_world_support", + "description": "
\n

\n Specify secure world support for trusty OS.\n

\n
\n" + }, + "hide_mtrr_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "hide_mtrr_support", + "description": "
\n

\n Specify MTRR capability to hide for VM.\n

\n
\n" + }, + "security_vm": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "security_vm", + "description": "
\n

\n Specify TPM2 FIXUP for VM.\n

\n
\n" + }, + "cpu_affinity": { + "$ref": "#/definitions/CPUAffinityConfiguration", + "title": "Physical CPU affinity", + "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" + }, + "clos": { + "$ref": "#/definitions/CLOSConfiguration", + "title": "clos", + "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" + }, + "memory": { + "$ref": "#/definitions/PostLaunchedMemoryInfo", + "title": "memory", + "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" + }, + "priority": { + "$ref": "#/definitions/PriorityType", + "default": "PRIO_LOW", + "title": "priority", + "description": "
\n

\n Specify the VM vCPU priority for scheduling.\n

\n
\n" + }, + "companion_vmid": { + "type": "integer", + "default": 65535, + "title": "companion_vmid", + "description": "
\n

\n Specify the companion VM id of this VM.\n

\n
\n" + }, + "console_vuart": { + "$ref": "#/definitions/ConsoleVuartConfiguration", + "default": "None", + "title": "Console virtual UART type", + "description": "
\n

\n 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).\n

\n
\n" + }, + "mmio_resources": { + "$ref": "#/definitions/PostLaunchedMMIOResourcesConfiguration", + "title": "mmio_resources", + "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" + }, + "pci_devs": { + "$ref": "#/definitions/PCIDevsConfiguration", + "title": "PCI device assignment", + "description": "" + }, + "PTM": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Precision Time Measurement", + "description": "
\n

\n 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.\n

\n
\n" + }, + "os_type": { + "$ref": "#/definitions/OSType", + "default": "Non-Windows OS", + "title": "OS type", + "description": "
\n

\n Select the OS type for this VM. This is required to run Windows in a User VM. See\n \n Device Model Parameters\n \n for how to include this in the Device Model arguments.\n

\n
\n" + }, + "vbootloader": { + "$ref": "#/definitions/EnablementType", + "default": "Enable", + "title": "Open Virtual Machine Firmware", + "description": "
\n

\n Use virtual bootloader OVMF (Open Virtual Machine Firmware) to boot this VM.\n

\n
\n" + }, + "vuart0": { + "$ref": "#/definitions/EnablementType", + "default": "Enable", + "title": "Emulate COM1 as stdio I/O", + "description": "
\n

\n 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.\n

\n
\n" + }, + "usb_xhci": { + "type": "string", + "pattern": "^([\\d]+-[\\d]+){0,1}(:[\\d]+-[\\d]+)*$", + "title": "Virtual USB HCI", + "description": "
\n

\n 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.\n

\n
\n" + }, + "virtio_devices": { + "type": "object", + "properties": { + "console": { + "type": "string", + "title": "console", + "description": "
\n

\n The virtio console device setting. Input format:\n \n \n [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]\n \n \n

\n
\n" + }, + "network": { + "type": "string", + "title": "network", + "description": "
\n

\n The virtio network device setting.\nInput format:\n \n \n device_name[,vhost][,mac=XX:XX:XX:XX:XX:XX]\n \n \n .\nThe\n \n device_name\n \n is the name of the TAP (or MacVTap) device.\nIt must include the keyword\n \n tap\n \n .\n \n vhost\n \n specifies the\nvhost backend; otherwise, the VBSU backend is used. The\n \n mac\n \n address is optional.\n

\n
\n" + }, + "input": { + "type": "string", + "title": "input", + "description": "
\n

\n The virtio input device setting.\n

\n
\n" + }, + "block": { + "type": "string", + "title": "block", + "description": "
\n

\n The virtio block device setting.\nFormat:\n \n [blk\n \n partition:][img\n \n path]\n \n . Example:\n \n \n /dev/sda3:./a/b.img\n \n \n .\n

\n
\n" + } + }, + "title": "Virt-IO devices", + "description": "
\n

\n Enable virt-IO devices in post-launched VMs.\n

\n
\n" + } + } + }, + "BasicMemoryInfo": { + "type": "object", + "required": [ + "whole" + ], + "properties": { + "whole": { + "type": "integer", + "default": 256, + "title": "Memory size (MB)", + "description": "
\n

\n Specify the physical memory size allocated to this VM in megabytes.\n

\n
\n" + } + } + }, + "VMBasicConfigType": { + "type": "object", + "required": [ + "vm_type", + "name", + "memory", + "console_vuart", + "os_type", + "vbootloader", + "vuart0", + "virtio_devices" + ], + "properties": { + "vm_type": { + "$ref": "#/definitions/BasicVMType", + "title": "VM type", + "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 15, + "pattern": "^\\S+$", + "title": "VM name", + "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" + }, + "cpu_affinity": { + "$ref": "#/definitions/CPUAffinityConfiguration", + "title": "Physical CPU affinity", + "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" + }, + "memory": { + "$ref": "#/definitions/BasicMemoryInfo", + "title": "memory", + "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" + }, + "os_config": { + "$ref": "#/definitions/OSConfigurations", + "title": "os_config", + "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" + }, + "console_vuart": { + "$ref": "#/definitions/ConsoleVuartConfiguration", + "default": "None", + "title": "Console virtual UART type", + "description": "
\n

\n 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).\n

\n
\n" + }, + "mmio_resources": { + "$ref": "#/definitions/MMIOResourcesConfiguration", + "title": "mmio_resources", + "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" + }, + "pci_devs": { + "$ref": "#/definitions/PCIDevsConfiguration", + "title": "PCI device assignment", + "description": "" + }, + "os_type": { + "$ref": "#/definitions/OSType", + "default": "Non-Windows OS", + "title": "OS type", + "description": "
\n

\n Select the OS type for this VM. This is required to run Windows in a User VM. See\n \n Device Model Parameters\n \n for how to include this in the Device Model arguments.\n

\n
\n" + }, + "vbootloader": { + "$ref": "#/definitions/EnablementType", + "default": "Enable", + "title": "Open Virtual Machine Firmware", + "description": "
\n

\n Use virtual bootloader OVMF (Open Virtual Machine Firmware) to boot this VM.\n

\n
\n" + }, + "vuart0": { + "$ref": "#/definitions/EnablementType", + "default": "Enable", + "title": "Emulate COM1 as stdio I/O", + "description": "
\n

\n 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.\n

\n
\n" + }, + "usb_xhci": { + "type": "string", + "pattern": "^([\\d]+-[\\d]+){0,1}(:[\\d]+-[\\d]+)*$", + "title": "Virtual USB HCI", + "description": "
\n

\n 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.\n

\n
\n" + }, + "virtio_devices": { + "type": "object", + "properties": { + "console": { + "type": "string", + "title": "console", + "description": "
\n

\n The virtio console device setting. Input format:\n \n \n [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]\n \n \n

\n
\n" + }, + "network": { + "type": "string", + "title": "network", + "description": "
\n

\n The virtio network device setting.\nInput format:\n \n \n device_name[,vhost][,mac=XX:XX:XX:XX:XX:XX]\n \n \n .\nThe\n \n device_name\n \n is the name of the TAP (or MacVTap) device.\nIt must include the keyword\n \n tap\n \n .\n \n vhost\n \n specifies the\nvhost backend; otherwise, the VBSU backend is used. The\n \n mac\n \n address is optional.\n

\n
\n" + }, + "input": { + "type": "string", + "title": "input", + "description": "
\n

\n The virtio input device setting.\n

\n
\n" + }, + "block": { + "type": "string", + "title": "block", + "description": "
\n

\n The virtio block device setting.\nFormat:\n \n [blk\n \n partition:][img\n \n path]\n \n . Example:\n \n \n /dev/sda3:./a/b.img\n \n \n .\n

\n
\n" + } + }, + "title": "Virt-IO devices", + "description": "
\n

\n Enable virt-IO devices in post-launched VMs.\n

\n
\n" + } + } + }, + "PreLaunchedVMBasicConfigType": { + "type": "object", + "required": [ + "vm_type", + "name", + "console_vuart" + ], + "properties": { + "vm_type": { + "$ref": "#/definitions/BasicVMType", + "title": "VM type", + "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 15, + "pattern": "^\\S+$", + "title": "VM name", + "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" + }, + "cpu_affinity": { + "$ref": "#/definitions/CPUAffinityConfiguration", + "title": "Physical CPU affinity", + "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" + }, + "os_config": { + "$ref": "#/definitions/OSConfigurations", + "title": "os_config", + "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" + }, + "console_vuart": { + "$ref": "#/definitions/ConsoleVuartConfiguration", + "default": "None", + "title": "Console virtual UART type", + "description": "
\n

\n 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).\n

\n
\n" + }, + "mmio_resources": { + "$ref": "#/definitions/MMIOResourcesConfiguration", + "title": "mmio_resources", + "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" + }, + "pci_devs": { + "$ref": "#/definitions/PCIDevsConfiguration", + "title": "PCI device assignment", + "description": "" + } + } + }, + "ServiceVMBasicConfigType": { + "type": "object", + "required": [ + "vm_type", + "name", + "console_vuart" + ], + "properties": { + "vm_type": { + "$ref": "#/definitions/BasicVMType", + "title": "VM type", + "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 15, + "pattern": "^\\S+$", + "title": "VM name", + "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" + }, + "cpu_affinity": { + "$ref": "#/definitions/CPUAffinityConfiguration", + "title": "Physical CPU affinity", + "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" + }, + "os_config": { + "$ref": "#/definitions/OSConfigurations", + "title": "os_config", + "description": "
\n

\n General information for host kernel, boot\nargument and memory.\n

\n
\n" + }, + "console_vuart": { + "$ref": "#/definitions/ConsoleVuartConfiguration", + "default": "None", + "title": "Console virtual UART type", + "description": "
\n

\n 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).\n

\n
\n" + } + } + }, + "PostLaunchedVMBasicConfigType": { + "type": "object", + "required": [ + "vm_type", + "name", + "memory", + "console_vuart", + "os_type", + "vbootloader", + "vuart0", + "virtio_devices" + ], + "properties": { + "vm_type": { + "$ref": "#/definitions/BasicVMType", + "title": "VM type", + "description": "
\n

\n Select the VM type. A standard VM (\n \n STANDARD_VM\n \n ) is for general-purpose applications, such as human-machine interface (HMI). A real-time VM (\n \n RTVM\n \n ) offers special features for time-sensitive applications.\n

\n
\n" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 15, + "pattern": "^\\S+$", + "title": "VM name", + "description": "
\n

\n Specify the name used to identify this VM. The VM name will be shown in the hypervisor console vm_list command.\n

\n
\n" + }, + "cpu_affinity": { + "$ref": "#/definitions/CPUAffinityConfiguration", + "title": "Physical CPU affinity", + "description": "
\n

\n Select a subset of physical CPUs that this VM can use. More than one can be selected.\n

\n
\n" + }, + "memory": { + "$ref": "#/definitions/PostLaunchedMemoryInfo", + "title": "memory", + "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" + }, + "console_vuart": { + "$ref": "#/definitions/ConsoleVuartConfiguration", + "default": "None", + "title": "Console virtual UART type", + "description": "
\n

\n 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).\n

\n
\n" + }, + "mmio_resources": { + "$ref": "#/definitions/PostLaunchedMMIOResourcesConfiguration", + "title": "mmio_resources", + "description": "
\n

\n MMIO resources to passthrough.\n

\n
\n" + }, + "pci_devs": { + "$ref": "#/definitions/PCIDevsConfiguration", + "title": "PCI device assignment", + "description": "" + }, + "os_type": { + "$ref": "#/definitions/OSType", + "default": "Non-Windows OS", + "title": "OS type", + "description": "
\n

\n Select the OS type for this VM. This is required to run Windows in a User VM. See\n \n Device Model Parameters\n \n for how to include this in the Device Model arguments.\n

\n
\n" + }, + "vbootloader": { + "$ref": "#/definitions/EnablementType", + "default": "Enable", + "title": "Open Virtual Machine Firmware", + "description": "
\n

\n Use virtual bootloader OVMF (Open Virtual Machine Firmware) to boot this VM.\n

\n
\n" + }, + "vuart0": { + "$ref": "#/definitions/EnablementType", + "default": "Enable", + "title": "Emulate COM1 as stdio I/O", + "description": "
\n

\n 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.\n

\n
\n" + }, + "usb_xhci": { + "type": "string", + "pattern": "^([\\d]+-[\\d]+){0,1}(:[\\d]+-[\\d]+)*$", + "title": "Virtual USB HCI", + "description": "
\n

\n 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.\n

\n
\n" + }, + "virtio_devices": { + "type": "object", + "properties": { + "console": { + "type": "string", + "title": "console", + "description": "
\n

\n The virtio console device setting. Input format:\n \n \n [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]\n \n \n

\n
\n" + }, + "network": { + "type": "string", + "title": "network", + "description": "
\n

\n The virtio network device setting.\nInput format:\n \n \n device_name[,vhost][,mac=XX:XX:XX:XX:XX:XX]\n \n \n .\nThe\n \n device_name\n \n is the name of the TAP (or MacVTap) device.\nIt must include the keyword\n \n tap\n \n .\n \n vhost\n \n specifies the\nvhost backend; otherwise, the VBSU backend is used. The\n \n mac\n \n address is optional.\n

\n
\n" + }, + "input": { + "type": "string", + "title": "input", + "description": "
\n

\n The virtio input device setting.\n

\n
\n" + }, + "block": { + "type": "string", + "title": "block", + "description": "
\n

\n The virtio block device setting.\nFormat:\n \n [blk\n \n partition:][img\n \n path]\n \n . Example:\n \n \n /dev/sda3:./a/b.img\n \n \n .\n

\n
\n" + } + }, + "title": "Virt-IO devices", + "description": "
\n

\n Enable virt-IO devices in post-launched VMs.\n

\n
\n" + } + } + }, + "BasicFeatureOptionsType": { + "type": "object", + "required": [ + "IVSHMEM" + ], + "properties": { + "IVSHMEM": { + "$ref": "#/definitions/IVSHMEMInfo", + "title": "Inter-VM shared memory", + "description": "
\n

\n Configure shared memory regions for inter-VM communication.\n

\n
\n" + } + } + }, + "HVBasicConfigType": { + "type": "object", + "required": [ + "DEBUG_OPTIONS", + "FEATURES", + "vuart_connections" + ], + "properties": { + "DEBUG_OPTIONS": { + "$ref": "#/definitions/DebugOptionsType", + "title": "Debug options", + "description": "
\n

\n Configure the debug facilities.\n

\n
\n" + }, + "FEATURES": { + "$ref": "#/definitions/BasicFeatureOptionsType", + "title": "Hypervisor features", + "description": "
\n

\n Enable hypervisor features.\n

\n
\n" + }, + "vuart_connections": { + "$ref": "#/definitions/VuartConnectionsType", + "title": "Inter-VM virtual UART connection", + "description": "
\n

\n Specify the vUART connection settings.\nRefer to\n \n Enable vUART Configurations\n \n for detailed vUART settings.\n

\n
\n" + } + } + }, + "AdvancedMemoryInfo": { + "type": "object", + "required": [ + "start_hpa" + ], + "properties": { + "start_hpa": { + "$ref": "#/definitions/HexFormat", + "default": "0x100000000", + "title": "start_hpa", + "description": "
\n

\n The starting physical address in host for the VM.\n

\n
\n" + }, + "size": { + "$ref": "#/definitions/MemorySizeType", + "default": "0x20000000", + "title": "size", + "description": "
\n

\n The memory size in bytes for the VM. Default value is\n \n 0x200000000\n \n .\n

\n
\n" + }, + "start_hpa2": { + "$ref": "#/definitions/HexFormat", + "default": "0x0", + "title": "start_hpa2", + "description": "
\n

\n Start of second HPA for non-contiguous allocations in host for the VM.\n

\n
\n" + }, + "size_hpa2": { + "$ref": "#/definitions/MemorySizeType", + "default": "0x0", + "title": "size_hpa2", + "description": "
\n

\n Memory size of second HPA for non-contiguous allocations in Bytes for the VM.\n

\n
\n" + } + } + }, + "VMAdvancedConfigType": { + "type": "object", + "required": [ + "clos", + "memory" + ], + "properties": { + "lapic_passthrough": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "LAPIC passthrough", + "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "io_completion_polling": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "I/O completion polling", + "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "nested_virtualization_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Nested virtualization", + "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" + }, + "virtual_cat_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Virtual Cache Allocation Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "clos": { + "$ref": "#/definitions/CLOSConfiguration", + "title": "clos", + "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" + }, + "epc_section": { + "$ref": "#/definitions/EPCSection", + "title": "epc_section", + "description": "
\n

\n Specify the Intel Software Guard Extensions (SGX) enclave page cache (EPC) section settings.\n

\n
\n" + }, + "memory": { + "$ref": "#/definitions/AdvancedMemoryInfo", + "title": "memory", + "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" + }, + "pt_intx": { + "type": "string", + "title": "pt_intx", + "description": "
\n

\n Specify the pre-launched VM owned IOAPIC pins and the corresponding mapping between physical GSI and virtual GSI.\n

\n
\n" + }, + "PTM": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Precision Time Measurement", + "description": "
\n

\n 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.\n

\n
\n" + } + } + }, + "PreLaunchedVMAdvancedConfigType": { + "type": "object", + "required": [ + "clos", + "memory" + ], + "properties": { + "lapic_passthrough": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "LAPIC passthrough", + "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "io_completion_polling": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "I/O completion polling", + "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "nested_virtualization_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Nested virtualization", + "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" + }, + "virtual_cat_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Virtual Cache Allocation Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "clos": { + "$ref": "#/definitions/CLOSConfiguration", + "title": "clos", + "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" + }, + "epc_section": { + "$ref": "#/definitions/EPCSection", + "title": "epc_section", + "description": "
\n

\n Specify the Intel Software Guard Extensions (SGX) enclave page cache (EPC) section settings.\n

\n
\n" + }, + "memory": { + "$ref": "#/definitions/PreLaunchedMemoryInfo", + "title": "memory", + "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" + }, + "pt_intx": { + "type": "string", + "title": "pt_intx", + "description": "
\n

\n Specify the pre-launched VM owned IOAPIC pins and the corresponding mapping between physical GSI and virtual GSI.\n

\n
\n" + }, + "PTM": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Precision Time Measurement", + "description": "
\n

\n 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.\n

\n
\n" + } + } + }, + "ServiceVMAdvancedConfigType": { + "type": "object", + "required": [ + "clos", + "memory" + ], + "properties": { + "lapic_passthrough": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "LAPIC passthrough", + "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "io_completion_polling": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "I/O completion polling", + "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "nested_virtualization_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Nested virtualization", + "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" + }, + "virtual_cat_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Virtual Cache Allocation Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "clos": { + "$ref": "#/definitions/CLOSConfiguration", + "title": "clos", + "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" + }, + "memory": { + "$ref": "#/definitions/ServiceMemoryInfo", + "title": "memory", + "description": "
\n

\n Specify memory information for Service and User VMs.\n

\n
\n" + } + } + }, + "PostLaunchedVMAdvancedConfigType": { + "type": "object", + "required": [ + "clos" + ], + "properties": { + "lapic_passthrough": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "LAPIC passthrough", + "description": "
\n

\n Enable LAPIC passthrough for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "io_completion_polling": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "I/O completion polling", + "description": "
\n

\n Enable polling mode for I/O completion for this VM. This feature is required for VMs with stringent real-time performance needs.\n

\n
\n" + }, + "nested_virtualization_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Nested virtualization", + "description": "
\n

\n Enable nested virtualization for KVM.\n

\n
\n" + }, + "virtual_cat_support": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "Virtual Cache Allocation Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "clos": { + "$ref": "#/definitions/CLOSConfiguration", + "title": "clos", + "description": "
\n

\n Class of Service for Cache Allocation Technology.\nRefer SDM 17.19.2 for details, and use with caution.\n

\n
\n" + }, + "PTM": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Precision Time Measurement", + "description": "
\n

\n 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.\n

\n
\n" + } + } + }, + "AdvancedFeatureOptionsType": { + "type": "object", + "required": [ + "RELOC", + "SCHEDULER", + "MULTIBOOT2", + "ENFORCE_TURNOFF_AC", + "ENFORCE_TURNOFF_GP", + "RDT", + "HYPERV_ENABLED", + "ACPI_PARSE_ENABLED", + "L1D_VMENTRY_ENABLED", + "MCE_ON_PSC_DISABLED" + ], + "properties": { + "RELOC": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Hypervisor relocation", + "description": "
\n

\n Enable hypervisor relocation in memory. The bootloader may need to change the location of the hypervisor because of other firmware.\n

\n
\n" + }, + "SCHEDULER": { + "$ref": "#/definitions/SchedulerType", + "default": "SCHED_BVT", + "title": "Virtual CPU scheduler", + "description": "
\n

\n Select the scheduling algorithm for determining the priority of User VMs running on a shared virtual CPU.\n

\n
\n" + }, + "MULTIBOOT2": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Multiboot2", + "description": "
\n

\n Enable multiboot2 protocol support (with multiboot1 downward compatibility). If multiboot1 meets your requirements, disable this feature to reduce hypervisor code size.\n

\n
\n" + }, + "ENFORCE_TURNOFF_AC": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Split lock detection", + "description": "
\n

\n 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.\n

\n
\n" + }, + "ENFORCE_TURNOFF_GP": { + "$ref": "#/definitions/Boolean", + "default": "n", + "title": "UC lock detection", + "description": "
\n

\n 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.\n

\n
\n" + }, + "RDT": { + "$ref": "#/definitions/RDTType", + "title": "Intel Resource Director Tech", + "description": "
\n

\n 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.\n

\n
\n" + }, + "HYPERV_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Hyper-V", + "description": "
\n

\n Enable Microsoft Hyper-V Hypervisor Top-Level Functional Specification (TFLS) for User VMs running Windows.\n

\n
\n" + }, + "ACPI_PARSE_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Parse ACPI tables", + "description": "
\n

\n 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.\n

\n
\n" + }, + "L1D_VMENTRY_ENABLED": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "Mitigate L1 terminal fault", + "description": "
\n

\n 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.\n

\n
\n" + }, + "MCE_ON_PSC_DISABLED": { + "$ref": "#/definitions/Boolean", + "default": "y", + "title": "MCE workaround", + "description": "
\n

\n Enable the software workaround for Machine Check Error on Page Size Change (erratum in some processor families).\n

\n
\n" + }, + "SSRAM": { + "$ref": "#/definitions/SSRAMInfo", + "title": "Software SRAM", + "description": "
\n

\n Configure Software SRAM. This feature reserves memory buffers as always-cached memory to improve an application's real-time performance.\n

\n
\n" + } + } + }, + "AdvancedMemoryOptionsType": { + "type": "object", + "required": [ + "STACK_SIZE" + ], + "properties": { + "STACK_SIZE": { + "$ref": "#/definitions/HexFormat", + "default": "0x2000", + "title": "CPU memory stack size (bytes)", + "description": "
\n

\n 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.\n

\n
\n" + } + } + }, + "AdvancedCapacitiesOptionsType": { + "type": "object", + "required": [ + "MAX_PCI_DEV_NUM", + "MAX_PT_IRQ_ENTRIES", + "MAX_MSIX_TABLE_NUM", + "MAX_EMULATED_MMIO" + ], + "properties": { + "MAX_PCI_DEV_NUM": { + "type": "integer", + "minimum": 1, + "maximum": 1024, + "default": 96, + "title": "Max PCI devices", + "description": "
\n

\n 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.\n

\n
\n" + }, + "MAX_PT_IRQ_ENTRIES": { + "type": "integer", + "default": 256, + "title": "Max passthrough IRQ entries", + "description": "
\n

\n Specify the maximum number of interrupt request (IRQ) entries from all passthrough devices.\n

\n
\n" + }, + "MAX_MSIX_TABLE_NUM": { + "type": "integer", + "minimum": 1, + "maximum": 2048, + "default": 64, + "title": "Max MSI-X tables", + "description": "
\n

\n Specify the maximum number of Message Signaled Interrupt MSI-X tables per device. The default value is calculated from the board configuration file.\n

\n
\n" + }, + "MAX_EMULATED_MMIO": { + "type": "integer", + "minimum": 1, + "maximum": 128, + "default": 16, + "title": "Max emulated MMIO regions", + "description": "
\n

\n Specify the maximum number of emulated MMIO regions for device virtualization. The default value is calculated from the board configuration file.\n

\n
\n" + } + } + }, + "HVAdvancedConfigType": { + "type": "object", + "required": [ + "FEATURES", + "MEMORY", + "CAPACITIES" + ], + "properties": { + "FEATURES": { + "$ref": "#/definitions/AdvancedFeatureOptionsType", + "title": "Hypervisor features", + "description": "
\n

\n Enable hypervisor features.\n

\n
\n" + }, + "MEMORY": { + "$ref": "#/definitions/AdvancedMemoryOptionsType", + "title": "Memory options", + "description": "
\n

\n Configure memory used by the hypervisor.\n

\n
\n" + }, + "CAPACITIES": { + "$ref": "#/definitions/AdvancedCapacitiesOptionsType", + "title": "Hypervisor capacities", + "description": "
\n

\n Configure the capacities of the hypervisor.\n

\n
\n" + } + } + } + } } \ No newline at end of file diff --git a/misc/config_tools/scenario_config/jsonschema/converter.py b/misc/config_tools/scenario_config/jsonschema/converter.py index ed8c999cf..991a43da2 100644 --- a/misc/config_tools/scenario_config/jsonschema/converter.py +++ b/misc/config_tools/scenario_config/jsonschema/converter.py @@ -171,7 +171,12 @@ class XS2JS: if enum and '@acrn:title' in restriction['xs:enumeration'][0].get('xs:annotation', {}): enum_names = [] for enum_element in restriction['xs:enumeration']: - enum_names.append(enum_element['xs:annotation']['@acrn:title']) + if 'xs:annotation' in enum_element and '@acrn:title' in enum_element.get('xs:annotation', {}): + enum_names.append(enum_element['xs:annotation']['@acrn:title']) + else: + enum_name = enum_element['@value'] + print('Warning!: enum element {} does not provide a enumName'.format(str(enum_element))) + enum_names.append(enum_name) js_st["enumNames"] = enum_names js_st.update(self.xsa2jsa(restriction))