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
Compile with support for Intel VMX
-config SOCKET
- bool "Include Network Socket Support"
- default y
- help
- Enable networking support in Palacios
-
-
-
-config PROFILE_VMM
- bool "Enable VMM profiling support"
- default y
- help
- Enable the profiling framework in Palacios
- -----
- This is a framwork that allows components of palacios to record
- information that is periodically reported to the log file
-
-config INSTRUMENT_VMM
- bool "Enable VMM instrumentation"
- default n
- help
- Enable the instrumentation framework
- --------
- This is much heavier weight than profiling
-
-config BUILT_IN_STDLIB
- bool "Enable Built in versions of stdlib functions"
+config FRAME_POINTER
+ bool "Compile with Frame pointers"
default n
- help
- Not all host OSes provide link targets for stdlib functions
- Palacios provides internal implementations of these functions, that you can select from this list
+ help
+ Compiles the Palacios library with Frame pointers
-config BUILT_IN_MEMSET
- bool "memset()"
+config DEBUG_INFO
+ bool "Compile with Debug Information"
default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of memset
+ help
+ Compiles the Palacios library with debugging symbols
+choice
+ prompt "X86 decoder"
+ default XED
-config BUILT_IN_MEMCPY
- bool "memcpy()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of memcpy
+config XED
+ bool "XED decoder library"
+ depends on !LINUX
+ help
+ This uses the XED decoder library from pintools
-config BUILT_IN_MEMCMP
- bool "memcmp()"
+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
- depends on BUILT_IN_STDLIB
help
- This enables Palacios' internal implementation of memcmp
+ 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 BUILT_IN_STRLEN
- bool "strlen()"
- default n
- depends on BUILT_IN_STDLIB
+config MAX_CPUS
+ int "Maximum number of cpus"
+ range 1 255
+ default "16"
help
- This enables Palacios' internal implementation of strlen
-
-config BUILT_IN_STRNLEN
- bool "strnlen()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strnlen
+ Specifies the maximum number of hardware CPUs supported by the OS
+ For uniprocessor environments, set this to 1
+endmenu
+source "palacios/src/interfaces/Kconfig"
-config BUILT_IN_STRCMP
- bool "strcmp()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strcmp
+menu "Virtual core specialization"
-config BUILT_IN_STRNCMP
- bool "strncmp()"
+config CUSTOM_CPUID
+ bool "Use custom CPU information (vendor, etc)"
default n
- depends on BUILT_IN_STDLIB
help
- This enables Palacios' internal implementation of strncmp
+ 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 BUILT_IN_STRCAT
- bool "strcat()"
+config STRICT_MSR_SEMANTICS
+ bool "Use strict RDMSR/WRMSR semantics"
default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strcat
+ 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 BUILT_IN_STRNCAT
- bool "strncat()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strncat
+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 BUILT_IN_STRCPY
- bool "strcpy()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strcpy
+endmenu
-config BUILT_IN_STRNCPY
- bool "strncpy()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strncpy
+source "palacios/src/extensions/Kconfig"
-config BUILT_IN_STRDUP
- bool "strdup()"
+config TELEMETRY
+ bool "Enable VMM telemetry support"
default n
- depends on BUILT_IN_STDLIB
help
- This enables Palacios' internal implementation of strdup
+ 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 BUILT_IN_ATOI
- bool "atoi()"
+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 BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of atoi
+ depends on TELEMETRY && HOST_PWRSTAT
+ help
+ Enable telemetry information for power/energy counters
+
-config BUILT_IN_STRCHR
- bool "strchr()"
+config EXPERIMENTAL
+ bool "Enable Experimental options"
default n
- depends on BUILT_IN_STDLIB
help
- This enables Palacios' internal implementation of strchr
+ 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 BUILT_IN_STRRCHR
- bool "strrchr()"
+config CHECKPOINT
+ bool "Enable Checkpointing"
default n
- depends on BUILT_IN_STDLIB
help
- This enables Palacios' internal implementation of strrchr
+ Enable checkpointing functionality (save/load VMs)
-config BUILT_IN_STRPBRK
- bool "strpbrk()"
+config LIVE_MIGRATION
+ bool "Enable Live Migration"
+ depends on CHECKPOINT
default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strpbrk
-
-
-endmenu
-
-
-
-
-menu "Symbiotic Functions"
+ help
+ Enable live migration functionality (send/receive VMs)
-config SYMBIOTIC
- bool "Enable Symbiotic Functionality"
+config DEBUG_CHECKPOINT
+ bool "Enable Checkpointing and Live Migration Debugging Output"
+ depends on CHECKPOINT
default n
- help
- Enable Symbiotic components of the VMM
+ help
+ Generate output from the debugging statements in checkpointing and live migration
endmenu
-
-
-menu "Debug configuration"
-
-config CONFIG_DEBUG_INFO
- bool "Compile with Debug information"
- default n
- help
- This adds the -g flag to the compilation flags
-
+menu "Debug Configuration"
## Is unwind information useful
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
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"
This turns on debugging for the Instruction Emulator
-config DEBUG_XED
- bool "XED"
+config DEBUG_DECODER
+ bool "Instruction Decoder"
default n
depends on DEBUG_ON
help
- This turns on debugging for the Xed Decoder
+ This turns on debugging for the selected instruction decoder
config DEBUG_HALT
bool "Halt"
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 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
-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
-config ROMBIOS_PATH
- string "Path to pre-built ROMBIOS binary"
+
+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 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
+
+
+
+
+
+