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.


Minor compile warning fixup and error checks
[palacios.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index cfbabb2..5288b22 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -75,6 +75,7 @@ config VMX
          Compile with support for Intel VMX
 
 
+
 config FRAME_POINTER
        bool "Compile with Frame pointers"
        default n
@@ -116,7 +117,15 @@ config QUIX86_DEBUG
 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"
@@ -136,6 +145,49 @@ config MAX_CPUS
 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.
+          
+
+endmenu
+
 source "palacios/src/extensions/Kconfig"
 
 config TELEMETRY
@@ -165,7 +217,13 @@ config PMU_TELEMETRY
         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"
@@ -208,6 +266,12 @@ source "Kconfig.stdlibs"
 
 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
@@ -221,6 +285,7 @@ config SHADOW_PAGING_VTLB
        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
@@ -230,13 +295,63 @@ config DEBUG_SHDW_PG_VTLB
        help
          Enables debugging messages for VTLB implementation
 
-config SHADOW_PAGING_CACHE1
-       bool "Shadow Page Cache (1)"
-       default y
-       depends on SHADOW_PAGING
+config SHADOW_PAGING_CACHE
+       bool "Shadow Page Cache"
+       default n
+       depends on SHADOW_PAGING && EXPERIMENTAL
        help 
-          Enables caching implemenation for shadow paging
+          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
 
@@ -301,6 +416,28 @@ endmenu
 
 source "palacios/src/gears/Kconfig"
 
+
+menu "HVM" 
+
+config HVM
+       bool "Support Hybrid Virtual Machines"
+       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
+
 menu "Debug configuration"
 
 ## Is unwind information useful
@@ -450,18 +587,77 @@ endmenu
 
 menu "BIOS Selection"
 
-config ROMBIOS_PATH
-       string "Path to pre-built ROMBIOS binary"
+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 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