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
+ select MULTITHREAD_OS
+ 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
+
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
+ 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
+
+
+endchoice
+
+menu "Supported host OS features"
+
config MULTITHREAD_OS
- bool "Compile for a multi threaded OS"
+ bool "Host support for multiple threads"
default y
help
- This allows Palacios to use OS thread mechanisms
+ Select this if your OS supports multiple threads of execution. This will enable features in Palacios
+ to require the creation of additional execution threads.
+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 Palacios can support
-
+ Specifies the maximum number of hardware CPUs supported by the OS
For uniprocessor environments, set this to 1
+endmenu
-config SOCKET
- bool "Include Network Socket Support"
- default y
- help
- Enable networking support in Palacios
-
-
-
+source "palacios/src/interfaces/Kconfig"
+source "palacios/src/extensions/Kconfig"
config TELEMETRY
bool "Enable VMM telemetry support"
help
Enable telemetry information for shadow paging
-config SYMBIOTIC_SWAP_TELEMETRY
- bool "Enable Symbiotic Swap Telemetry"
- default n
- depends on TELEMETRY && SYMBIOTIC_SWAP
- help
- Enable the telemetry information for the symbiotic swap subsystem
-config PASSTHROUGH_VIDEO
- bool "Enable Passthrough Video"
- default y
- help
- Configures Palacios to map a guest's framebuffer directly
- to the hardware framebuffer
-
-config INSTRUMENT_VMM
- bool "Enable VMM instrumentation"
- default n
- help
- Enable the instrumentation framework
- --------
- This is much heavier weight than profiling
-
config EXPERIMENTAL
bool "Enable Experimental options"
default n
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 VNET
- depends on EXPERIMENTAL
- bool "Enable Vnet in Palacios"
- default n
- help
- Enable the Vnet in Palacios
+endmenu
-config BUILT_IN_STDLIB
- bool "Enable Built in versions of stdlib functions"
- 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
-config BUILT_IN_MEMSET
- bool "memset()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of memset
+source "Kconfig.stdlibs"
-config BUILT_IN_MEMCPY
- bool "memcpy()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of memcpy
+menu "Virtual Paging"
-config BUILT_IN_MEMCMP
- bool "memcmp()"
- default n
- depends on BUILT_IN_STDLIB
+config SHADOW_PAGING
+ bool "Enable shadow paging"
+ default y
help
- This enables Palacios' internal implementation of memcmp
+ Enables shadow paging for virtual machines
-config BUILT_IN_STRLEN
- bool "strlen()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strlen
-config BUILT_IN_STRNLEN
- bool "strnlen()"
- default n
- depends on BUILT_IN_STDLIB
+config SHADOW_PAGING_VTLB
+ bool "Virtual TLB"
+ default y
+ depends on SHADOW_PAGING
help
- This enables Palacios' internal implementation of strnlen
+ Enables Virtual TLB implemenation for shadow paging
-config BUILT_IN_STRCMP
- bool "strcmp()"
+config DEBUG_SHDW_PG_VTLB
+ bool "Enable VTLB debugging"
default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strcmp
+ depends on SHADOW_PAGING_VTLB
+ help
+ Enables debugging messages for VTLB implementation
-config BUILT_IN_STRNCMP
- bool "strncmp()"
- default n
- depends on BUILT_IN_STDLIB
+config SHADOW_PAGING_CACHE1
+ bool "Shadow Page Cache (1)"
+ default y
+ depends on SHADOW_PAGING
help
- This enables Palacios' internal implementation of strncmp
+ Enables caching implemenation for shadow paging
-config BUILT_IN_STRCAT
- bool "strcat()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strcat
-config BUILT_IN_STRNCAT
- bool "strncat()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strncat
+endmenu
-config BUILT_IN_STRCPY
- bool "strcpy()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strcpy
-config BUILT_IN_STRNCPY
- bool "strncpy()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strncpy
-config BUILT_IN_STRDUP
- bool "strdup()"
+menu "Time Management"
+config VIRTUALIZE_TIME
+ bool "Enable Time virtualization"
default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strdup
-
-
-config BUILT_IN_ATOI
- bool "atoi()"
+ help
+ Enables the timer virtualization extensions
+
+config TIME_HIDE_VM_COST
+ bool "Hide VMM Run Cost"
default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of atoi
+ depends on VIRTUALIZE_TIME
+ 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 BUILT_IN_STRCHR
- bool "strchr()"
+config TIME_VIRTUALIZE_TSC
+ bool "Fully virtualize guest TSC"
default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strchr
+ depends on VIRTUALIZE_TIME
+ 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
-config BUILT_IN_STRRCHR
- bool "strrchr()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strrchr
-config BUILT_IN_STRPBRK
- bool "strpbrk()"
- default n
- depends on BUILT_IN_STDLIB
- help
- This enables Palacios' internal implementation of strpbrk
+menu "Symbiotic Functions"
-config BUILT_IN_STDIO
- bool "Enable Built in versions of stdio functions"
+config SYMBIOTIC
+ bool "Enable Symbiotic Functionality"
default n
help
- Not all host OSes provide link targets for stdio functions
- Palacios provides internal implementations of these functions, that you can select from this list
-
-
+ Enable Symbiotic components of the VMM.
+ This includes the SymSpy interface.
-config BUILT_IN_SPRINTF
- bool "sprintf()"
+config SYMCALL
+ bool "Symbiotic upcalls"
default n
- depends on BUILT_IN_STDIO
- help
- This enables Palacios' internal implementation of sprintf
-
+ depends on SYMBIOTIC && EXPERIMENTAL
+ help
+ Enables the Symbiotic upcall interface
-config BUILT_IN_SNPRINTF
- bool "snprintf()"
+config SWAPBYPASS
+ bool "SwapBypass"
default n
- depends on BUILT_IN_STDIO
+ depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
help
- This enables Palacios' internal implementation of snprintf
+ This enables the SwapBypass architecture
-
-config BUILT_IN_VSPRINTF
- bool "vsprintf()"
+config SWAPBYPASS_TELEMETRY
+ bool "Enable SwapBypass Telemetry"
default n
- depends on BUILT_IN_STDIO
+ depends on TELEMETRY && SWAPBYPASS
help
- This enables Palacios' internal implementation of vsprintf
+ Enable the telemetry information for the SwapBypass subsystem
-config BUILT_IN_VSNPRINTF
- bool "vsnprintf()"
+menuconfig SYMMOD
+ bool "Symbiotic Modules"
default n
- depends on BUILT_IN_STDIO
- help
- This enables Palacios' internal implementation of vsnprintf
+ depends on EXPERIMENTAL
+# depends on SYMBIOTIC
+ help
+ Enable Symbiotic module loading
-config BUILT_IN_VSNRPRINTF
- bool "vsnrprintf()"
- default n
- depends on BUILT_IN_STDIO
- help
- This enables Palacios' internal implementation of vsnrprintf
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
-menu "Symbiotic Functions"
-
-config SYMBIOTIC
- bool "Enable Symbiotic Functionality"
- default n
- help
- Enable Symbiotic components of the VMM
-
-
-config SYMBIOTIC_SWAP
- bool "Symbiotic Swap"
- default n
- depends on SYMBIOTIC && EXPERIMENTAL
- help
- This enables the symbiotic swap architecture
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
-
## 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_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 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
endmenu