Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Merge branch 'devel' of newskysaw.cs.northwestern.edu:/home/palacios/palacios into...
[palacios.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index c6446e5..9a7f7e7 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -3,6 +3,61 @@ 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
+       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
@@ -21,31 +76,65 @@ config VMX
          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"
@@ -66,29 +155,8 @@ config SHADOW_PAGING_TELEMETRY
        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
@@ -101,245 +169,147 @@ config EXPERIMENTAL
          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
-
-config BUILT_IN_STDLIB
-       bool "Enable Built in versions of stdlib functions"
+config CHECKPOINT
+       bool "Enable Checkpointing"
        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
+         Temporary option to enable experimental checkpoint code
 
-config BUILT_IN_MEMSET
-       bool "memset()"
-       default n
-       depends on BUILT_IN_STDLIB
-       help 
-         This enables Palacios' internal implementation of memset
 
 
-config BUILT_IN_MEMCPY
-       bool "memcpy()"
-       default n
-       depends on BUILT_IN_STDLIB
-       help 
-         This enables Palacios' internal implementation of memcpy
-
-config BUILT_IN_MEMMOVE
-       bool "memmove()"
-       default n
-       depends on BUILT_IN_STDLIB
-       help 
-         This enables Palacios' internal implementation of memmove
+endmenu
 
-config BUILT_IN_MEMCMP
-       bool "memcmp()"
-       default n
-       depends on BUILT_IN_STDLIB
-       help 
-         This enables Palacios' internal implementation of memcmp
 
-config BUILT_IN_STRLEN
-       bool "strlen()"
-       default n
-       depends on BUILT_IN_STDLIB
-       help 
-         This enables Palacios' internal implementation of strlen
+source "Kconfig.stdlibs"
 
-config BUILT_IN_STRNLEN
-       bool "strnlen()"
-       default n
-       depends on BUILT_IN_STDLIB
-       help 
-         This enables Palacios' internal implementation of strnlen
 
+menu "Virtual Paging"
 
-config BUILT_IN_STRCMP
-       bool "strcmp()"
-       default n
-       depends on BUILT_IN_STDLIB
+config SHADOW_PAGING
+       bool "Enable shadow paging"
+       default y
        help 
-         This enables Palacios' internal implementation of strcmp
+          Enables shadow paging for virtual machines
 
 
-config BUILT_IN_STRCASECMP
-       bool "strcasecmp()"
-       default n
-       depends on BUILT_IN_STDLIB
-       help
-         This enables Palacios' internal implementation of strcasecmp
-
-config BUILT_IN_STRNCMP
-       bool "strncmp()"
-       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 strncmp
+          Enables Virtual TLB implemenation for shadow paging
+
 
-config BUILT_IN_STRNCASECMP
-       bool "strncasecmp()"
+config DEBUG_SHDW_PG_VTLB
+       bool "Enable VTLB debugging"
        default n
-       depends on BUILT_IN_STDLIB
+       depends on SHADOW_PAGING_VTLB
        help
-         This enables Palacios' internal implementation of strncasecmp
+         Enables debugging messages for VTLB implementation
 
-
-config BUILT_IN_STRCAT
-       bool "strcat()"
-       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 strcat
+          Enables caching implemenation for shadow paging
 
-config BUILT_IN_STRNCAT
-       bool "strncat()"
-       default n
-       depends on BUILT_IN_STDLIB
-       help 
-         This enables Palacios' internal implementation of strncat
 
-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
 
-config BUILT_IN_STRDUP
-       bool "strdup()"
-       default n
-       depends on BUILT_IN_STDLIB
-       help 
-         This enables Palacios' internal implementation of strdup
 
-config BUILT_IN_STRSTR
-       bool "strstr()"
+menu "Time Management"
+config VIRTUALIZE_TIME
+       bool "Enable Time virtualization"
        default n
-       depends on BUILT_IN_STDLIB
        help
-         This enables Palacios internal implementation of strstr
-
-
-config BUILT_IN_ATOI
-       bool "atoi()"
+          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
 
@@ -350,6 +320,21 @@ config DEBUG_ON
          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
@@ -381,7 +366,12 @@ config DEBUG_INTERRUPTS
        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"
@@ -399,12 +389,12 @@ config DEBUG_EMULATOR
          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"
@@ -420,8 +410,12 @@ config DEBUG_DEV_MGR
        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