From 256108f16b322b6ce19c1923d232b3682e7dd8fb Mon Sep 17 00:00:00 2001 From: Junjie Mao Date: Fri, 19 Oct 2018 17:06:13 +0800 Subject: [PATCH] kconfig: add more help messages to config symbols Add help messages to all visible symbols except those heap-related ones which will be dropped eventually. v2 -> v3 * Fix typos and misleading descriptions. v1 -> v2 * Per kconfig language, help messages shall have a larger indent level than the attributes. * Rephrase for clarify. Tracked-On: #1588 Signed-off-by: Junjie Mao Reviewed-by: Anthony Xu --- hypervisor/arch/x86/Kconfig | 129 ++++++++++++++++++++++++++++-------- 1 file changed, 100 insertions(+), 29 deletions(-) diff --git a/hypervisor/arch/x86/Kconfig b/hypervisor/arch/x86/Kconfig index 663bf0ee6..c87f2c695 100644 --- a/hypervisor/arch/x86/Kconfig +++ b/hypervisor/arch/x86/Kconfig @@ -1,26 +1,43 @@ 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 config PLATFORM @@ -31,16 +48,27 @@ config PLATFORM 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 + help + The maximum number of virtual CPUs the hypervisor can support in a + single VM. config MAX_PCPU_NUM int "Maximum number of PCPU" @@ -48,45 +76,56 @@ config MAX_PCPU_NUM default 8 config MAX_IOMMU_NUM - int "Maximum number of iommu dev" + 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 each stack used in the hypervisor" + hex "Capacity of one stack, in byte" default 0x2000 - -config LOG_BUF_SIZE - hex "Capacity of logbuf" - default 0x100000 + 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_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. + 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 microsecond when waiting for - secondary CPUs to start up. + 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 @@ -95,16 +134,16 @@ config SERIAL_MMIO_BASE depends on SERIAL_MMIO default 0xfc000000 help - A 64-bit integer indicating the base physical address of the - memory-mapped UART registers. + 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 of the UART ports. This is logically 16-bit but used as a - 64-bit integer. + The base address of the UART ports. This is logically 16-bit but used + as a 64-bit integer. config MALLOC_ALIGN int "Block size in the heap for malloc()" @@ -121,62 +160,86 @@ config HEAP_SIZE 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. + A 32-bit integer indicating the size of RAM region below address + 0x10000, starting from address 0x0. config RAM_START hex "Address of the RAM region assigned to the hypervisor" default 0x6e000000 if PLATFORM_SBL default 0x00100000 if PLATFORM_UEFI help - A 64-bit integer indicating the base 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. + A 64-bit integer indicating the base 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 RAM_SIZE hex "Size of the RAM region assigned to the hypervisor" default 0x02000000 help - A 64-bit integer indicating the size of RAM assigned to the - hypervisor. It is ensured at link time that the footprint of the - hypervisor does not exceed this size. + A 64-bit integer indicating the size of RAM assigned to the + hypervisor. It is ensured at link time that the footprint of the + hypervisor does not exceed this 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 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. + 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 @@ -195,11 +258,19 @@ config MTRR_ENABLED 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_INIT_BUS_LIMIT - hex "bus limitation when iommu init" + hex "Limit of PCI bus on IOMMU initialization" default 0xf if PLATFORM_SBL default 0xff if PLATFORM_UEFI + help + Any BDF with a bus ID smaller than or equal to this limit is mapped to + the IOMMU domain of the first VM. config MAX_PCI_DEV_NUM int "Maximum number of PCI dev"