config SCENARIO string "ACRN scenario" default "sdc" help By specifying SCENARIO name, ACRN will load corresponding VM configurations to build the hypervisor. Currently ACRN provides below reference scenarios: sdc: Typical scenario for automotive Software Defined Cockpit system. sdc will have one pre-launched SOS VM and one post-launched VM; sdc2: Extended scenario for automotive Software Defined Cockpit system. sdc2 will have one pre-launched SOS VM and up to three post-launched VMs; industry: Typical scenario for industry usage with 3 VMs: one pre-launched SOS VM, one post-launched Standard VM for HMI, one post-launched RT VM for real-time control. hybrid: Typical scenario for hybrid usage with 3 VMs: one pre-launched VM, one pre-launched SOS VM and one post-launched Standard VM; logical_partition: Typical scenario that run two isolated pre-launched VMs; config MULTIBOOT2 bool "Multiboot2 support" default y help Support boot ACRN from multiboot2 protocol. Multiboot2 support is needed for some EFI platforms to get correct ACPI RSDP, it also could provide host efi information for hypervisor. choice prompt "ACRN Scheduler" default SCHED_NOOP help Select the CPU scheduler to be used by the hypervisor config SCHED_NOOP bool "NOOP scheduler" help The NOOP (No-Operation) scheduler means there is a strict 1 to 1 mapping between vCPUs and pCPUs. config SCHED_IORR bool "IORR scheduler" help IORR (IO sensitive Round Robin) scheduler supports multipule vCPUs running on on one pCPU, and they will be scheduled by a IO sensitive round robin policy. config SCHED_BVT bool "BVT scheduler" help BVT (Borrowed Virtual time) is virtual time based scheduling algorithm, it dispatching the runnable thread with the earliest effective virtual time. TODO: BVT scheduler will be built on top of prioritized scheduling mechanism, i.e. higher priority threads get scheduled first, and same priority tasks are scheduled per BVT. endchoice config BOARD string "Target board" help The target board this build runs on top of. config DEFCONFIG_LIST string option defconfig_list default "arch/x86/configs/$BOARD.config" config RELEASE bool "Release build" default n help Whether to build a release version of the hypervisor. Logs, serial console and hypervisor shell are available only in non-release (i.e. debug) builds. Assertions are not effective in release builds. config MAX_EMULATED_MMIO_REGIONS int "Maximum number of emulated MMIO regions" range 0 128 default 16 config MAX_PT_IRQ_ENTRIES int "Maximum number of interrupt source for PT devices" range 0 256 default 64 config STACK_SIZE hex "Capacity of one stack, in bytes" default 0x2000 help The size of stacks used by physical cores. Each core uses one stack for normal operations and another three for specific exceptions. config LOG_BUF_SIZE hex "Capacity of logbuf for each physical cpu" default 0x40000 config LOG_DESTINATION int "Bitmap of consoles where logs are printed" range 0 7 default 7 help A bitmap indicating the destinations of log messages. Currently there are 3 destinations available. Bit 0 represents the serial console, bit 1 the SOS ACRN log and bit 2 NPK log. Effective only in debug builds. choice prompt "Serial IO type" depends on !RELEASE optional help If selected, this configures whether the physical serial port shall be accessed via memory-mapped registers or I/O ports. If this is not selected, the serial port is disabled. This is the default. config SERIAL_PCI bool "PCI" help Select this if the serial port shall be accessed via PCI memory-mapped registers. config SERIAL_LEGACY bool "Legacy" help Select this if the serial port shall be accessed via legacy port in/out instructions. endchoice config SERIAL_PCI_BDF string "BDF of serial PCI device" depends on SERIAL_PCI default "0:18.2" help BDF: bus, device and function of the serial PCI device; for an example, PCI device ttyS2: 0:18.2. config SERIAL_PIO_BASE hex "Base address of serial PIO region" depends on SERIAL_LEGACY default 0x3f8 help The base address of the serial ports. This is logically 16-bit but used as a 64-bit integer. config CONSOLE_LOGLEVEL_DEFAULT int "Default loglevel on the serial console" depends on !RELEASE range 0 6 default 3 help This indicates the maximum debug level of logs that will be available on the the serial console. The higher the number, the more logs will be available. config MEM_LOGLEVEL_DEFAULT int "Default loglevel in memory" depends on !RELEASE range 0 6 default 5 help This indicates the maximum debug level of logs that will be available in the logbuf in memory which can be accessed by ACRN log in SOS. The higher the number, the more logs will be available. config NPK_LOGLEVEL_DEFAULT int "Default loglevel for the hypervisor NPK log" depends on !RELEASE range 0 6 default 5 help This indicates the maximum debug level of logs that will be available via NPK log. The higher the number, the more logs will be available. config LOW_RAM_SIZE hex "Size of the low RAM region" range 0 0x10000 default 0x00010000 help A 32-bit integer indicating the size of RAM region below address 0x10000, starting from address 0x0. config HV_RAM_START hex "2M-aligned Start physical address of the RAM region used by the hypervisor" default 0x00400000 help A 64-bit integer indicating the base physical address where the hypervisor should be loaded. If RELOC is disabled, the bootloader is required to load the hypervisor to this specific address. Otherwise the hypervisor will not boot. With RELOC enabled the hypervisor may relocate its symbols to where it is placed, and thus the bootloader might not place the hypervisor at this specific address. Note that the addr demands 2M aligned, otherwise memory corruption may occur. config HV_RAM_SIZE hex "Size of the RAM region used by the hypervisor" range 0x1000000 0x10000000 default 0x0b800000 help A 64-bit integer indicating the size of RAM used by the hypervisor. It is ensured at link time that the footprint of the hypervisor does not exceed this size. config PLATFORM_RAM_SIZE hex "Size of the physical platform RAM" range 0x100000000 0x4000000000 default 0x400000000 help A 64-bit integer indicating the size of the physical platform RAM (MMIO not included). config SOS_RAM_SIZE hex "Size of the Service OS (SOS) RAM" range 0x100000000 0x4000000000 default 0x400000000 help A 64-bit integer indicating the size of the Service OS RAM (MMIO not included). config UOS_RAM_SIZE hex "Size of the User OS (UOS) RAM" range 0 0x2000000000 default 0x200000000 help A 64-bit integer indicating the size of the User OS RAM (MMIO not included). Now we assume each UOS uses same amount of RAM size. config ACPI_PARSE_ENABLED bool "Enable ACPI runtime parsing" default y help Platform specific ACPI info may be retrieved thru boot-time parse of ACPI table, or thru parse of off-line tool. This option enables the boot-time parse of ACPI table, and overwrite the information from off-line tool. config HYPERV_ENABLED bool "Enable Hyper-V enlightenment" default y help When set, the minimum set of TLFS functionality together with some performance enlightenments are enabled. config RDT_ENABLED bool "Enable RDT (Resource Director Technology)" default n help When set in platforms that support RDT, hypervisor can allocate various amount of HW resources such as L2 or/and L3 to VMs to achieve different Class of Service (COS, or CLOS). config GPU_SBDF hex "Segment, Bus, Device, and function of the GPU" depends on ACPI_PARSE_ENABLED default 0x00000010 help A 32-bit integer encoding the segment, bus, device and function of the GPU. This integer consists of a 16-bit segment ID, 8-bit bus ID, 5-bit device ID and 3-bit function ID. As an example, for PCI device at 00:02.0 in DRHD segment 0, this SBDF would be (0 << 16) | (0 << 8) | (2 << 3) | (0 << 0), i.e. 0x00000010. config RELOC bool "Enable hypervisor relocation" default y help When selected, the hypervisor will relocate itself to where it is loaded. This allows the bootloader to put the hypervisor image to wherever appropriate. Without relocation the bootloader must put the image to RAM_START, otherwise the hypervisor will not start up. config MAX_IOAPIC_NUM int "Maximum number of IO-APICs" range 1 10 default 1 config MAX_IOAPIC_LINES int "Maximum number of interrupt lines per IOAPIC" range 1 120 default 120 config MAX_IR_ENTRIES int "Maximum number of Interrupt Remapping Entries" default 256 help Minimum value is 256. Value must be 2^n. config IOMMU_BUS_NUM hex "Highest PCI bus ID used during IOMMU initialization" default 0x100 help Any BDF with a bus ID smaller than this number is mapped to the IOMMU domain of the first VM. config MAX_PCI_DEV_NUM int "Maximum number of PCI devices" range 1 1024 default 96 config MAX_MSIX_TABLE_NUM int "Maximum number of MSI-X tables per device" range 1 2048 default 16 config ENFORCE_VALIDATED_ACPI_INFO bool "Enforce the use of validated ACPI info table" default n help When set, the use of validated ACPI info tables is enforced and using an offline tool to generate such data is required. Otherwise a warning will be printed when validated ACPI info is unavailable, but a binary can still be built with the ACPI info template. config L1D_FLUSH_VMENTRY_ENABLED bool "Enable L1 cache flush before VM entry" default n config UEFI_OS_LOADER_NAME string "UEFI OS loader name" default "\\EFI\\org.clearlinux\\bootloaderx64.efi" help Name of the UEFI bootloader that starts the Service VM. This is typically the systemd-boot or Grub bootloader but could be any other UEFI executable. config MCE_ON_PSC_WORKAROUND_DISABLED bool "Force to disable software workaround for Machine Check Error on Page Size Change" default n help By default, software workaround for Machine Check Error on Page Size Change is conditionally applied to the models that may be affected by the issue. However, the software workaround has negative impact on performance. If all the guest OS kernels are trusted, this option may be set for performance. config IOMMU_ENFORCE_SNP bool "IOMMU enforce snoop behavior of DMA operation" default n help GPU IOMMU doesn't support snoop control capability, To enable gvt-d,disable IOMMU snoop control by default.