mainmenu "Palacios VMM Configuration" menu "Target Configuration" choice prompt "Target Host OS" default KITTEN config KITTEN bool "Kitten OS" select BUILT_IN_STDLIB select BUILT_IN_STRCASECMP select BUILT_IN_ATOI select ALIGNED_PG_ALLOC help This enables the necesary options to compile Palacios with Kitten config LINUX_BUILTIN bool "OLD Linux (Built in) -- to be deprecated" select BUILT_IN_STDLIB select BUILT_IN_ATOI select FILE help This enables the necessary options to compile Palacios with Linux 2.6 Currently, this is in development, and only 2.6.32 is verified to work config LINUX bool "Linux Module" select BUILT_IN_STDLIB select BUILT_IN_STRDUP select BUILT_IN_ATOI select FILE select V3_DECODER help This enables the necessary options to compile Palacios as a Linux module config LINUX_KERN depends on LINUX string "Linux Kernel Source directory" default "/usr/src/linux" help This is the directory containing the linux source for the kernel module to be built config MINIX bool "MINIX 3" help This enables the necesary options to compile Palacios with Kitten config OTHER_OS bool "Other OS" help Choose this to compile Palacios for a Generic Host OS (Formerly GeekOS) endchoice source "Kconfig.stdlibs" config CRAY_XT bool "Red Storm (Cray XT3/XT4)" help Support for Cray XT3 and XT4 systems. config SVM bool "AMD SVM Support" default y help Compile with support for AMD SVM config VMX bool "Intel VMX Support" default y help Compile with support for Intel VMX config FRAME_POINTER bool "Compile with Frame pointers" default n help Compiles the Palacios library with Frame pointers config DEBUG_INFO bool "Compile with Debug Information" default n help Compiles the Palacios library with debugging symbols choice prompt "X86 decoder" default XED config XED bool "XED decoder library" depends on !LINUX help This uses the XED decoder library from pintools config V3_DECODER bool "Internal Palacios decoder" help This selects the internal V3Vee x86 decoder config QUIX86 bool "QUIX86 decoder" help This selects the QUIX86 decoder library config QUIX86_DEBUG bool "QUIX86 decoder debug version" help This selects the QUIX86 decoder library compiled w/o optimization and with debug info endchoice menu "Supported host OS features" config MEM_BLOCK_SIZE int "Allocation size for underlying VM memory" default 134217728 help This is the default size in bytes of the underlying memory allocations used for the base memory regions. A good default value is 128MB (134217728 or 0x8000000 bytes). Note that the host interface must be able to provide contiguous memory of at least this size in order for VMs to typically work. This value can be overriden via a load-time option, provided the host supports this. config ALIGNED_PG_ALLOC bool "Host support for aligned page allocations" default n help Select this if your OS supports allocating memory pages using an alignment. This is required if you want Palacios to run with large page table pages. config MAX_CPUS int "Maximum number of cpus" range 1 255 default "16" help Specifies the maximum number of hardware CPUs supported by the OS For uniprocessor environments, set this to 1 endmenu source "palacios/src/interfaces/Kconfig" menu "Virtual core specialization" config CUSTOM_CPUID bool "Use custom CPU information (vendor, etc)" default n help If set, the CPU information will be for a special V3VEE vendor. This should result in identical guest kernel setup, regardless of the underlying hardware, but it also means that the guest kernel has no chance of employing CPU-specific bug fixes. config STRICT_MSR_SEMANTICS bool "Use strict RDMSR/WRMSR semantics" default n help Use strict MSR semantics - when an unhandled MSR is read or written, a GPF is generated. This is typically usd with CUSTOM_CPU_TYPE on. config FP_SWITCH bool "Floating point context switching" default n help If set, floating point is handled for context switches (VM1->VM2->VM1 and/or VM->HOST->VM). This can be disabled for environments where a single VM is the only user of FP. Note that even if disabled, FP save/restore code is included for support of checkpoint/restore. config LAZY_FP_SWITCH bool "Use host-based lazy floating point context switching" depends on FP_SWITCH && HOST_LAZY_FPU_SWITCH default y help When true, the host's lazy floating point save/restore mechanism is notified on each exit and entry. If false, the floating point state is explicitly saved on each exit and restored on each entry---this save/restore is entirely done in Palacios. endmenu source "palacios/src/extensions/Kconfig" config TELEMETRY bool "Enable VMM telemetry support" default n help Enable the telemetry framework in Palacios ----- This is a framwork that allows components of palacios to record information that is periodically reported to the log output. Telemetry is automatically collected for vmexits. Subsystem telemetry is configured separately config SHADOW_PAGING_TELEMETRY bool "Enable Shadow Paging Telemetry" default y depends on TELEMETRY help Enable telemetry information for shadow paging config PMU_TELEMETRY bool "Enable PMU telemetry" default n depends on TELEMETRY && HOST_PMU help Enable telemetry information for a range of PMU counters This causes the currently configured PMU counts to be printed config PWRSTAT_TELEMETRY bool "Enable power statistics telemetry" default n depends on TELEMETRY && HOST_PWRSTAT help Enable telemetry information for power/energy counters config EXPERIMENTAL bool "Enable Experimental options" default n help This allows the selection of experimental features. This includes incomplete or unreviewed code. Only enable this feature if you are working on the features in question. IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features. Any code that violates this will be immediately deleted without warning. -- The purpose of this option is to allow features under development to be committed to the mainline to more easily track changes and provide access to multiple developers config CHECKPOINT bool "Enable Checkpointing" default n help Enable checkpointing functionality (save/load VMs) config LIVE_MIGRATION bool "Enable Live Migration" depends on CHECKPOINT default n help Enable live migration functionality (send/receive VMs) config DEBUG_CHECKPOINT bool "Enable Checkpointing and Live Migration Debugging Output" depends on CHECKPOINT default n help Generate output from the debugging statements in checkpointing and live migration endmenu menu "Debug Configuration" ## Is unwind information useful config DEBUG_ON bool "Enable Debugging" default y help This turns on debugging support config DEBUG_SVM bool "AMD SVM" default n depends on DEBUG_ON help This turns on debugging for the AMD SVM-specific code config DEBUG_VMX bool "Intel VT" default n depends on DEBUG_ON help This turns on debugging for the Intel VT-specific code config DEBUG_SHADOW_PAGING bool "Shadow paging" default n depends on DEBUG_ON help This turns on debugging for the shadow paging system config DEBUG_NESTED_PAGING bool "Nested paging" default n depends on DEBUG_ON help This turns on debugging for the nested paging system config DEBUG_CTRL_REGS bool "Control registers" default n depends on DEBUG_ON help This turns on debugging for the control register handlers config DEBUG_INTERRUPTS bool "Interrupts" default n depends on DEBUG_ON help This turns on debugging for the interrupt system config DEBUG_TIME bool "Timing" default n depends on DEBUG_ON help This turns on debugging of system time virtualization config DEBUG_SCHEDULER bool "Scheduler" default n depends on DEBUG_ON help This turns on debugging for scheduler config DEBUG_CPU_MAPPER bool "CPU Mapper" default n depends on DEBUG_ON help This turns on debugging for CPU Mapper config DEBUG_IO bool "IO" default n depends on DEBUG_ON help This turns on debugging for the IO handlers config DEBUG_EMULATOR bool "Instruction Emulator" default n depends on DEBUG_ON help This turns on debugging for the Instruction Emulator config DEBUG_DECODER bool "Instruction Decoder" default n depends on DEBUG_ON help This turns on debugging for the selected instruction decoder config DEBUG_HALT bool "Halt" default n depends on DEBUG_ON help This turns on debugging for the halt instruction handler config DEBUG_MWAIT bool "MWAIT/MONITOR" default n depends on DEBUG_ON help This turns on debugging for the mwait and monitor instruction handlers config DEBUG_DEV_MGR bool "Device Manager" default n depends on DEBUG_ON help This turns on debugging for the device manager config DEBUG_MEM_ERRORS bool "Verbose memory errors" default n depends on DEBUG_ON help This turns on debugging for memory translations and lookups config DEBUG_LOCKS bool "Lock debugging (if host supports it)" default n depends on DEBUG_ON help This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support. config DEBUG_MEM_ALLOC bool "Memory allocation debugging (if host supports it)" default n depends on DEBUG_ON help This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host endmenu menu "Virtual Paging" config NESTED_PAGING bool "Enable nested paging" default y help Enable nested paging (should always be on) config SHADOW_PAGING bool "Enable shadow paging" default y help Enables shadow paging for virtual machines config SHADOW_PAGING_VTLB bool "Virtual TLB" default y depends on SHADOW_PAGING help Enables Virtual TLB implemenation for shadow paging Virtual TLB now uses PAE so there are no 4 GB restrictions config DEBUG_SHDW_PG_VTLB bool "Enable VTLB debugging" default n depends on SHADOW_PAGING_VTLB help Enables debugging messages for VTLB implementation config SHADOW_PAGING_CACHE bool "Shadow Page Cache" default n depends on SHADOW_PAGING && EXPERIMENTAL help Enables caching implementation of shadow paging config DEBUG_SHADOW_PAGING_CACHE bool "Enable Shadow Page Cache Debugging" default n depends on SHADOW_PAGING_CACHE help Enables debugging messages for the VTLB + Caching implementation #config SHADOW_PAGING_KVM # bool "KVM-style Shadow Pager" # default n # depends on SHADOW_PAGING && EXPERIMENTAL # help # Enables shadow pager derived from KVM # You probably do not want this and it will probably not compile! # #config DEBUG_SHADOW_PAGING_KVM # bool "Enable KVM-style Shadow Pager Debugging" # default n # depends on SHADOW_PAGING_KVM # help # Enables debugging messages for the KVM-style shadow pager config SWAPPING bool "Enable swapping" default n depends on (SHADOW_PAGING || NESTED_PAGING) && FILE help Enables swapping of regions of guest physical memory to a file config DEBUG_SWAPPING bool "Enable swapping debugging" default n depends on SWAPPING help Provides debugging output from the swapping system config MEM_TRACK bool "Enable memory access tracking" default n depends on SHADOW_PAGING || NESTED_PAGING help Allows tracking of memory accesses on a page granularity config DEBUG_MEM_TRACK bool "Enable memory access tracking debugging" default n depends on MEM_TRACK help Provides debugging output for memory access tracking endmenu source "palacios/src/devices/Kconfig" menu "Boot Environments" menu "BIOS" choice prompt "Boot Code Selection" default SEABIOS help Select which BIOSes to map into the default PC Class Hardware Configuration config SEABIOS bool "Use the SEABIOS and SEABIOS-VGA Boot Code" help Use the SEABIOS and SEABIOS-VGA Boot code config BOCHSBIOS bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code" help Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code config OTHERBIOS bool "Use a user-specified BIOS" help Use a user-specified BIOS endchoice config SEABIOS_PATH string "Path to pre-built SEABIOS binary" depends on SEABIOS default "./bios/seabios/out/bios.bin" help Path to the SEABIOS binary to use config SEABIOSVGA_PATH string "Path to pre-built SEABIOS-VGA binary" depends on SEABIOS default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin" help This is the SEABIOS-compatible vgabios that will be used for the guest config BOCHSBIOS_PATH string "Path to pre-built BOCHS BIOS binary" depends on BOCHSBIOS default "./bios/rombios/BIOS-bochs-latest" help This is the rombios that will be used for the guests config BOCHSBIOSVGA_PATH string "Path to pre-built BOCHS-compatible VGABIOS binary" depends on BOCHSBIOS default "./bios/vgabios/VGABIOS-lgpl-latest.bin" help This is the vgabios that will be used for the guests config OTHERBIOS_PATH string "Path to user-specified Boot Code" depends on OTHERBIOS help This is a completely user-determined blob that will be mapped into the guest No VGA BIOS will be mapped! config BIOS_START hex "Starting address (linear address) of BIOS" range 0xe0000 0xe0000 if SEABIOS range 0xf0000 0xf0000 if BOCHSBIOS help This is the starting address (linear address) of the BIOS code config VMXASSIST_PATH string "Path to pre-built VMXASSIST binary" depends on VMX default "./bios/vmxassist/vmxassist.bin" help This is vmxassist image to boot real mode guests on Intel VMX Platforms endmenu menu Multiboot config MULTIBOOT bool "Support Multiboot2-compliant boot" default y help If set, it is possible to boot a multiboot2 compliant kernel directly. config DEBUG_MULTIBOOT depends on MULTIBOOT bool "Enable Multiboot2 debugging in Palacios" default n help Enable Multiboot2 debugging output endmenu endmenu menu "Symbiosis" config SYMBIOTIC bool "Enable Symbiotic Functionality" default n depends on BOCHSBIOS help Enable Symbiotic components of the VMM. This includes the SymSpy interface. config SYMCALL bool "Symbiotic upcalls" default n depends on SYMBIOTIC && EXPERIMENTAL help Enables the Symbiotic upcall interface config SWAPBYPASS bool "SwapBypass" default n depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL help This enables the SwapBypass architecture config SWAPBYPASS_TELEMETRY bool "Enable SwapBypass Telemetry" default n depends on TELEMETRY && SWAPBYPASS help Enable the telemetry information for the SwapBypass subsystem menuconfig SYMMOD bool "Symbiotic Modules" default n depends on EXPERIMENTAL && SYMBIOTIC help Enable Symbiotic module loading endmenu menu "VNET" config VNET bool "Enable Vnet in Palacios" default n help Enable the Vnet in Palacios config DEBUG_VNET depends on VNET bool "Enable Vnet Debug in Palacios" default n help Enable the Vnet debug in Palacios endmenu source "palacios/src/gears/Kconfig" menu HVM config HVM bool "Support Hybrid Virtual Machines" depends on MULTIBOOT default n help If set, it is possible to make VMs that are partitioned (cores, memory, devices, hardware access, etc) into a part ("the ROS") that supports normal VM operation and a part ("the HRT") that supports Hybrid Run-Times, for example Nautilus-based HRTs for parallel languages. config DEBUG_HVM depends on HVM bool "Enable HVM debugging in Palacios" default n help Enable HVM debugging output endmenu