select BUILT_IN_STDLIB
select BUILT_IN_STRDUP
select BUILT_IN_ATOI
+ select BUILT_IN_STRTOX
+ select BUILT_IN_STRTOI
+ select BUILT_IN_ATOX
select FILE
select V3_DECODER
help
endchoice
+source "Kconfig.stdlibs"
+
config CRAY_XT
bool "Red Storm (Cray XT3/XT4)"
help
Compile with support for Intel VMX
+
config FRAME_POINTER
bool "Compile with Frame pointers"
default n
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"
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.
+
+config CACHEPART
+ bool "Support last-level cache partitioning"
+ depends on CACHE_INFO && EXPERIMENTAL
+ default y
+ help
+ When true, <cachepart> can be used to select which page colors
+ are allowed to be used by the VM, thus limiting it to a portion
+ of the last level shared cache.
+ This is an experimental option and requires a lot of careful
+ configuration to work. In particular, memory base regions must be
+ a page size, and initial allocation of the VM may take a long
+ time depending on the host's page allocator.
+
+config DEBUG_CACHEPART
+ bool "Enable debugging of cache partitioning"
+ depends on CACHEPART
+ default n
+ help
+ Generate output from the debugging statements in cache partitioning
+
+
+endmenu
+
source "palacios/src/extensions/Kconfig"
config 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"
bool "Enable Checkpointing"
default n
help
- Temporary option to enable experimental checkpoint code
-
-
-
-endmenu
+ Enable checkpointing functionality (save/load VMs)
-
-source "Kconfig.stdlibs"
-
-
-menu "Virtual Paging"
-
-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
-
-
-config DEBUG_SHDW_PG_VTLB
- bool "Enable VTLB debugging"
+config LIVE_MIGRATION
+ bool "Enable Live Migration"
+ depends on CHECKPOINT
default n
- depends on SHADOW_PAGING_VTLB
help
- Enables debugging messages for VTLB implementation
-
-config SHADOW_PAGING_CACHE1
- bool "Shadow Page Cache (1)"
- default y
- depends on SHADOW_PAGING
- help
- Enables caching implemenation for shadow paging
-
-
-endmenu
-
+ Enable live migration functionality (send/receive VMs)
-
-menu "Time Management"
-config TIME_DILATION
- bool "Control Guest/Host Time Offseting"
+config DEBUG_CHECKPOINT
+ bool "Enable Checkpointing and Live Migration Debugging Output"
+ depends on CHECKPOINT
default n
- depends on EXPERIMENTAL
help
- Controls the relative speeds of the guest and host processor
- to allow the VM to provide the illusion of the guest seeing time
- pass at a different rate than the host system does.
+ Generate output from the debugging statements in checkpointing and live migration
-config TIME_HIDE_VM_COST
- bool "Hide VMM Run Cost"
- default n
- depends on EXPERIMENTAL
- help
- Offset guest time from host time sufficiently to hide the cost of
- running in the virtual machine. This can aid the consistency of
- time between multiple timers, but can cause the guest to run
- a good bit slower than the host in VM-intensive parts of the code.
-config TIME_VIRTUALIZE_TSC
- bool "Fully virtualize guest TSC"
- default n
- depends on EXPERIMENTAL
- help
- Virtualize the processor time stamp counter in the guest,
- generally increasing consistency between various time sources
- but also potentially making guest time run slower than real time.
-
endmenu
-
-
-menu "Symbiotic Functions"
-
-config SYMBIOTIC
- bool "Enable Symbiotic Functionality"
- default n
- 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
-# depends on 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
-
-menu "Debug configuration"
-
+menu "Debug Configuration"
## Is unwind information useful
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
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
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
-menu "BIOS Selection"
+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 ROMBIOS_PATH
- string "Path to pre-built ROMBIOS binary"
+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 VGABIOS_PATH
- string "Path to pre-built VGABIOS binary"
+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
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
-source "palacios/src/devices/Kconfig"
+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
+
+
+
+
+
+