menu "Target Configuration"
-choice
+choice
prompt "Target Host OS"
default KITTEN
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
config MINIX
bool "MINIX 3"
help
- This enables the necesary options to compile Palacios with Kitten
+ This enables the necesary options to compile Palacios with Minix
+
+config NAUTILUS
+ bool "Nautilus"
+ select V3_DECODER
+ select FRAME_POINTER
+ help
+ This enables the necessary options to compile Palacios
+ for inclusion in the Nautilus kernel
+
+config NAUTILUS_KERN
+ depends on NAUTILUS
+ string "Nautilus Kernel Source directory"
+ default "../nautilus"
+ help
+ This is the directory containing the
+ Nautilus sources
+
config OTHER_OS
bool "Other OS"
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
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
endmenu
-
-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"
- 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
-
-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
-
-source "palacios/src/gears/Kconfig"
-
-menu "Debug configuration"
+menu "Debug Configuration"
## Is unwind information useful
endmenu
-menu "BIOS Selection"
+
+
+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"
endchoice
-
config SEABIOS_PATH
string "Path to pre-built SEABIOS binary"
depends on SEABIOS
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.
+
+choice
+ prompt "HVM Magic Upcall Mechanism"
+ default HVM_UPCALL_MAGIC_GPF
+
+config HVM_UPCALL_MAGIC_GPF
+ bool "GPF"
+ help
+ Upcall using a #GP with a well-known magic error code
+
+config HVM_UPCALL_MAGIC_PF
+ bool "Page Fault"
+ help
+ Upcall using a #PF with a well-known magic address and error code
+
+config HVM_UPCALL_MAGIC_SWINT
+ bool "Software interrupt"
+ help
+ Upcall using a software interrupt with a vector specified by
+ the VM's configuration
+endchoice
+
+
+
+config DEBUG_HVM
+ depends on HVM
+ bool "Enable HVM debugging in Palacios"
+ default n
+ help
+ Enable HVM debugging output
+
+endmenu
+
+
+
+
+
+