acrn-hypervisor/hypervisor/arch/x86/Kconfig

353 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 0x800000 0x4000000
default 0x800000
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 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 SSRAM_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.