369 lines
11 KiB
Plaintext
369 lines
11 KiB
Plaintext
config SCENARIO
|
|
string "ACRN scenario"
|
|
default "industry"
|
|
help
|
|
By specifying SCENARIO name, ACRN will load corresponding VM configurations
|
|
to build the hypervisor. Currently ACRN provides four reference scenarios:
|
|
|
|
- industry: Typical scenario for industry usage with 8 VMs: one pre-launched SOS VM,
|
|
one post-launched KATA VM, one post-launched RT VM for real-time control,
|
|
and up to five post-launched Standard VMs;
|
|
- hybrid: Typical scenario for hybrid usage with 3 VMs: one pre-launched Safety VM,
|
|
one pre-launched Service VM and one post-launched Standard VM;
|
|
- hybrid_rt: Typical scenario for hybrid real-time usage with 4 VMs: one
|
|
pre-launched RTVM, one pre-launched Service VM and two post-launched Standard VMs;
|
|
- logical_partition: Typical scenario that run two isolated pre-launched VMs
|
|
|
|
Other values are possible if a corresponding scenario has been created
|
|
under 'misc/vm_configs/scenarios/' in the source code.
|
|
|
|
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_BVT
|
|
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 "../misc/vm_configs/scenarios/$SCENARIO/$(BOARD)/$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.
|
|
|
|
config SERIAL_MMIO
|
|
bool "MMIO"
|
|
help
|
|
Select this if the serial port shall be accessed via MMIO registers.
|
|
|
|
endchoice
|
|
|
|
config SERIAL_PCI_BDF
|
|
hex "BDF of serial PCI device"
|
|
depends on SERIAL_PCI
|
|
default 0x00c2
|
|
help
|
|
BDF: bus, device and function of the serial PCI device. The BDF is packed
|
|
into a 16bit WORD with format (B:8, D:5, F:3). 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 SERIAL_MMIO_BASE
|
|
hex "Base address of MMIO UART"
|
|
depends on SERIAL_MMIO
|
|
default 0xfe040000
|
|
help
|
|
The base address of the MMIO serial port.
|
|
|
|
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"
|
|
range 0x200000 0x80000000
|
|
default 0x10000000
|
|
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
|
|
address will be referred as the lowest possible address that hypervisor be loaded,
|
|
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 0x20000000
|
|
default 0x14000000
|
|
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 CDP_ENABLED
|
|
bool "Enable CDP (Code and Data Prioritization)"
|
|
depends on RDT_ENABLED
|
|
default n
|
|
help
|
|
CDP is an extension of CAT. It enables isolation and separate
|
|
prioritization of code and data fetches to the L2 or L3 cache in a
|
|
software configurable manner, depending on hardware support.
|
|
|
|
config PSRAM_ENABLED
|
|
bool "Enable Software SRAM support"
|
|
depends on !CDP_ENABLED
|
|
default n
|
|
help
|
|
This will enable RTVM to make use of Software SRAM to improve the performance
|
|
of Real-Time applications. Software SRAM essentially a block of cache, and is separated via
|
|
CAT and protected by some methods. Software SRAM support and CDP support cannot co-exist.
|
|
|
|
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"
|
|
range 256 512
|
|
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 64
|
|
|
|
config L1D_FLUSH_VMENTRY_ENABLED
|
|
bool "Enable L1 cache flush before VM entry"
|
|
default n
|
|
|
|
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 ENFORCE_TURNOFF_AC
|
|
bool "Force to disable #AC for Split-locked Access"
|
|
default n
|
|
help
|
|
If CPU has #AC for split-locked access, HV enable it and VMs can't disable.
|
|
Set this to enforce turn off that #AC, for community developer only.
|
|
|
|
config IVSHMEM_ENABLED
|
|
bool "Enable ivshmem inter-vm communication based on hypervisor shared memory"
|
|
default n
|
|
help
|
|
Ivshmem shared memory is located in the hypervisor, it can provide multiple
|
|
memory regions as communication channels between pre-launched or post-launched
|
|
VMs.
|