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.


Basic HVM data structures and functions
[palacios.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index 71b85eb..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
@@ -214,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
@@ -227,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
@@ -236,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
 
@@ -307,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