382 lines
10 KiB
Plaintext
382 lines
10 KiB
Plaintext
choice
|
|
prompt "Type of boot firmware (BIOS) on the target platform"
|
|
default PLATFORM_SBL
|
|
help
|
|
The boot firmware (BIOS) used on the target board.
|
|
|
|
config PLATFORM_UEFI
|
|
bool "UEFI"
|
|
select EFI_STUB
|
|
help
|
|
Select this if the target board uses UEFI.
|
|
|
|
config PLATFORM_SBL
|
|
bool "SBL"
|
|
help
|
|
Select this if the target board uses Slim Bootloader.
|
|
|
|
endchoice
|
|
|
|
choice
|
|
prompt "Hypervisor mode"
|
|
default SHARING_MODE
|
|
help
|
|
Select the usage mode of the hypervisor.
|
|
|
|
config SHARING_MODE
|
|
bool "Sharing mode"
|
|
help
|
|
In sharing mode, the first VM (called Service OS or SOS) is capable of
|
|
managing the other VMs (called User OS or UOS) and trap/mediate their
|
|
I/O accesses to physical devices.
|
|
|
|
config PARTITION_MODE
|
|
bool "Partition mode"
|
|
depends on PLATFORM_SBL
|
|
help
|
|
In partition mode, every VM owns part of the physical resources
|
|
exclusively and runs with minimal interference from the others. The VM
|
|
configurations are statically defined in the source.
|
|
|
|
endchoice
|
|
|
|
choice
|
|
prompt "I/O emulation completion mode"
|
|
default IOREQ_NOTIFICATION
|
|
help
|
|
Select the mode of I/O emulation completion
|
|
|
|
config IOREQ_NOTIFICATION
|
|
bool "Notification mode"
|
|
help
|
|
When I/O request is completed, SOS will mark the completion status and
|
|
notify hypervisor via hypercall. Hypervisor will finish the post work
|
|
when notification is received.
|
|
|
|
config IOREQ_POLLING
|
|
bool "Polling mode"
|
|
help
|
|
When I/O request is completed, SOS will only mark completion status
|
|
without notifying hypervisor. Hypervisor will poll the completion
|
|
status and finish the post work.
|
|
|
|
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_VM_NUM
|
|
int "Maximum number of VM"
|
|
range 1 8
|
|
default 4
|
|
help
|
|
The maximum number of virtual machines (VMs) the hypervisor can
|
|
support. This is customizable per the use cases of the build. For
|
|
general-purpose builds the maximum of physical cores can be used.
|
|
|
|
config MAX_VCPUS_PER_VM
|
|
int "Maximum number of VCPUs per VM"
|
|
range 1 8
|
|
default 4 if PLATFORM_SBL
|
|
default 8 if PLATFORM_UEFI
|
|
help
|
|
The maximum number of virtual CPUs the hypervisor can support in a
|
|
single VM.
|
|
|
|
config MAX_PCPU_NUM
|
|
int "Maximum number of PCPU"
|
|
range 1 8
|
|
default 8
|
|
|
|
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 128
|
|
default 64
|
|
|
|
config MAX_IOMMU_NUM
|
|
int "Maximum number of IOMMU devices"
|
|
range 1 2
|
|
default 2
|
|
help
|
|
The maximum number of physical IOMMUs the hypervisor can support.
|
|
|
|
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.
|
|
|
|
config CPU_UP_TIMEOUT
|
|
int "Timeout in ms when bringing up secondary CPUs"
|
|
range 100 200
|
|
default 100
|
|
help
|
|
A 32-bit integer specifying the timeout in millisecond when waiting
|
|
for secondary CPUs to start up.
|
|
|
|
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
|
|
hex "BDF value of serial PCI device"
|
|
depends on SERIAL_PCI
|
|
default 0x00C2
|
|
help
|
|
A 16-bit integer encoding bus, device and function of the serial PCI device.
|
|
This integer consists of 8-bit bus ID, 5-bit device ID and 3-bit function ID.
|
|
As an example,for PCI device 00:18.2, this BDF would be (0 << 8) | (0x18 << 3)
|
|
| (2 << 0), it's 0x00C2.
|
|
|
|
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 COM_BASE
|
|
hex "Base address of the vuart port"
|
|
depends on !RELEASE
|
|
default 0x3f8
|
|
help
|
|
Base address of the vuart port.
|
|
|
|
config COM_IRQ
|
|
hex "IRQ of the vuart port"
|
|
depends on !RELEASE
|
|
default 4
|
|
help
|
|
IRQ of the vuart port.
|
|
|
|
config MALLOC_ALIGN
|
|
int "Block size in the heap for malloc()"
|
|
range 8 32
|
|
default 16
|
|
|
|
config HEAP_SIZE
|
|
hex "Capacity of the heap for malloc()"
|
|
default 0x100000
|
|
|
|
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"
|
|
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 "Start physical address of the RAM region used by the hypervisor"
|
|
default 0x6e000000 if PLATFORM_SBL
|
|
default 0x00100000 if PLATFORM_UEFI
|
|
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.
|
|
|
|
config HV_RAM_SIZE
|
|
hex "Size of the RAM region used by the hypervisor"
|
|
default 0x07800000 if PLATFORM_SBL
|
|
default 0x0b000000 if PLATFORM_UEFI
|
|
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"
|
|
default 0x200000000 if PLATFORM_SBL
|
|
default 0x400000000 if PLATFORM_UEFI
|
|
help
|
|
A 64-bit integer indicating the size of the physical platform RAM
|
|
(MMIO not included).
|
|
|
|
config SOS_RAM_SIZE
|
|
hex "Size of the vm0 (SOS) RAM"
|
|
default 0x200000000 if PLATFORM_SBL
|
|
default 0x400000000 if PLATFORM_UEFI
|
|
help
|
|
A 64-bit integer indicating the size of the vm0 (SOS) RAM (MMIO not
|
|
included).
|
|
|
|
config UOS_RAM_SIZE
|
|
hex "Size of the User OS (UOS) RAM"
|
|
default 0x100000000 if PLATFORM_SBL
|
|
default 0x200000000 if PLATFORM_UEFI
|
|
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 CONSTANT_ACPI
|
|
bool "The platform ACPI info is constant"
|
|
default n
|
|
help
|
|
Whether constant ACPI tables shall be used. If selected, the built-in
|
|
ACPI tables, usually generated on target platforms by an offline tool,
|
|
will be used. If not a fixup subroutine will be invoked to update the
|
|
built-in tables after parsing the real ACPI tables at runtime.
|
|
|
|
config DMAR_PARSE_ENABLED
|
|
bool "Enable ACPI DMA Remapping tables parsing"
|
|
default n if PLATFORM_SBL
|
|
default y if PLATFORM_UEFI
|
|
help
|
|
Whether to parse the ACPI DMA Remapping tables at runtime.
|
|
|
|
config GPU_SBDF
|
|
hex "Segment, Bus, Device, and function of the GPU"
|
|
depends on DMAR_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 EFI_STUB
|
|
bool "Enable EFI stub"
|
|
depends on PLATFORM_UEFI
|
|
default y
|
|
|
|
config UEFI_OS_LOADER_NAME
|
|
string "UEFI OS loader name"
|
|
depends on PLATFORM_UEFI
|
|
default "\\EFI\\org.clearlinux\\bootloaderx64.efi"
|
|
|
|
config MTRR_ENABLED
|
|
bool "Memory Type Range Registers (MTRR) enabled"
|
|
default y
|
|
|
|
config RELOC
|
|
bool "Enable hypervisor relocation"
|
|
default n
|
|
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 IOMMU_BUS_NUM
|
|
hex "Highest PCI bus ID used during IOMMU initialization"
|
|
default 0x10 if PLATFORM_SBL
|
|
default 0x100 if PLATFORM_UEFI
|
|
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
|