mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-24 08:03:59 +00:00
-- Config MAX_PT_IRQ_ENTRIES 64 in Kconfig -- Remove ptdev list -- Add alloc_ptdev_entry_id api v3-->v4: -- move is_entry_active from assign.c to ptdev.h -- Add clear active flag in release_entry v2-->v3: -- Remove redundancy active check for ptdev entry in release_all_entries and get_ptdev_info v1-->v2: -- split to small patches Tracked-On: #861 Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com> Reviewed-by: Jason Chen CJ <jason.cj.chen@intel.com> Reviewed-by: Binbin Wu <binbin.wu@intel.com> Reviewed-by: Eddie Dong <eddie.dong@intel.com>
378 lines
10 KiB
Plaintext
378 lines
10 KiB
Plaintext
choice
|
|
prompt "Platform"
|
|
default PLATFORM_SBL
|
|
help
|
|
The 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 PLATFORM
|
|
string
|
|
default "uefi" if PLATFORM_UEFI
|
|
default "sbl" if PLATFORM_SBL
|
|
|
|
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 byte"
|
|
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
|
|
default SERIAL_MMIO if PLATFORM_SBL
|
|
default SERIAL_PIO if PLATFORM_UEFI
|
|
help
|
|
Whether the physical serial port shall be accessed via memory-mapped
|
|
registers or I/O ports.
|
|
|
|
config SERIAL_MMIO
|
|
bool "MMIO"
|
|
help
|
|
Select this if the serial port shall be accessed via memory-mapped
|
|
registers.
|
|
|
|
config SERIAL_PIO
|
|
bool "PIO"
|
|
help
|
|
Select this if the serial port shall be accessed via in/out
|
|
instructions.
|
|
|
|
endchoice
|
|
|
|
config SERIAL_MMIO_BASE
|
|
hex "Base address of serial MMIO region"
|
|
depends on SERIAL_MMIO
|
|
default 0xfc000000
|
|
help
|
|
A 64-bit integer indicating the base physical address of the
|
|
memory-mapped UART registers.
|
|
|
|
config SERIAL_PIO_BASE
|
|
hex "Base address of serial PIO region"
|
|
depends on SERIAL_PIO
|
|
default 0x3f8
|
|
help
|
|
The base address of the UART 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 to where the hypervisor
|
|
should be loaded to. 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 is capable
|
|
of relocating its symbols to where it is placed at, and thus the
|
|
bootloader may not place the hypervisor at this specific address.
|
|
|
|
config HV_RAM_SIZE
|
|
hex "Size of the RAM region used by the hypervisor"
|
|
default 0x04800000 if PLATFORM_SBL
|
|
default 0x08000000 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
|
|
(not included the MMIO).
|
|
|
|
config SOS_RAM_SIZE
|
|
hex "Size of the vm0 RAM"
|
|
default 0x200000000 if PLATFORM_SBL
|
|
default 0x400000000 if PLATFORM_UEFI
|
|
help
|
|
A 64-bit integer indicating the size of the vm0 RAM (not included the MMIO).
|
|
|
|
config UOS_RAM_SIZE
|
|
hex "Size of the 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 (not included the MMIO).
|
|
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 DMAR 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
|
|
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
|
|
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
|
|
default y
|
|
|
|
config RELOC
|
|
bool "Enable 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 "Limit of PCI bus on 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 dev"
|
|
range 1 1024
|
|
default 96
|
|
|
|
config MAX_MSIX_TABLE_NUM
|
|
int "Maximum number of MSI-X Table per device"
|
|
range 1 2048
|
|
default 16
|
|
|
|
config ENFORCE_VALIDATED_ACPI_INFO
|
|
bool "Enforce validated ACPI info table"
|
|
default n
|
|
help
|
|
When set, validated ACPI info tables is enforced and using offline
|
|
tools 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
|