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.


Added ability to hook execution of arbitrary binary files. Added ability to add arbit...
[palacios.releases.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index 06f962b..3c98783 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -17,8 +17,8 @@ config KITTEN
        help
          This enables the necesary options to compile Palacios with Kitten
 
-config LINUX
-       bool "Linux 2.6"
+config LINUX_BUILTIN
+       bool "OLD Linux (Built in) -- to be deprecated"
        select BUILT_IN_STDLIB
        select BUILT_IN_ATOI
        select FILE
@@ -26,6 +26,25 @@ config LINUX
          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
@@ -63,6 +82,23 @@ config DEBUG_INFO
        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"
       
@@ -89,38 +125,10 @@ config MAX_CPUS
          Specifies the maximum number of hardware CPUs supported by the OS
          For uniprocessor environments, set this to 1
 
-config FILE
-       bool "Host Support for file operations"
-       default n
-       help
-         Select this if your host OS supports file operatoins and you want Palacios to be able to use them.
-
-
-config CONSOLE
-       bool "Host Support for VM console"
-       default n
-       help 
-         Select this if you want to forward a guest console interface to some host OS service
-
-config SOCKET
-        bool "Host support for Network Sockets"
-        default y
-        help
-          Select this if you host OS implements a socket API that is available to Palacios. This is required
-          to support the internal networking features of Palacios.
-
-
-config PACKET
-       bool "Host support for Raw Packet Transmision"
-       depends on EXPERIMENTAL
-       default n
-       help 
-         Select this if you host OS implements a raw packet network API that is available to Palacios. This is required 
-         to support the internal networking features of Palacios.
-
 endmenu
 
-
+source "palacios/src/interfaces/Kconfig"
+source "palacios/src/extensions/Kconfig"
 
 config TELEMETRY
        bool "Enable VMM telemetry support"
@@ -162,26 +170,58 @@ config VNET
         help
           Enable the Vnet in Palacios
 
-config DEBUG_VNET
-        depends on EXPERIMENTAL && VNET
-        bool "Enable Vnet Debug in Palacios"
-        default n
-        help
-          Enable the Vnet debug in Palacios
 
-config LINUX_VIRTIO_VNET
-        bool "Enable Virtio VNET interface"
-        default n
-        depends on PCI && EXPERIMENTAL && VNET
-        help
-          Enable the Virtio VNET interface
-
-config DEBUG_LINUX_VIRTIO_VNET
-        bool "Virtio VNET Interface Debugging"
-        default n
-        depends on LINUX_VIRTIO_VNET && DEBUG_ON
-        help
-          Enable debugging for the VNET Virtio interface
+config INSPECTOR
+       bool "Enable VM inspection"
+       depends on EXPERIMENTAL
+       default n
+       help 
+         Enable inspection framework for vm internal state
+
+config SW_INTERRUPTS
+    bool "Enable interception and hooking of software interrupts"
+    depends on EXPERIMENTAL
+    default n
+    help
+      This feature will cause the VMM to intercept the execution
+      of software interrupts (i.e. the INTn instruction) and enable
+      any INT vector to be hooked
+
+config SWINTR_PASSTHROUGH
+    bool "Hook all unhandled sofware interrupts for passthrough"
+    depends on SW_INTERRUPTS
+    default n
+    help
+      If enabled, this will cause all software interrupts 
+      (INT instruction vectors) to be hooked for passthrough.
+      May reduce performance but useful for debugging.
+
+config SYSCALL_HIJACK
+    bool "Enable System Call Hijacking"
+    depends on SW_INTERRUPTS
+    default n
+    help
+      Enable the VMM to hijack system calls executed by the guest.
+      If enabled, the VMM will hook execution of INT 80
+      (support for Fast-System Calls coming soon)
+
+config SYSCALL_PASSTHROUGH
+    bool "Hook all unhandled system calls for passthrough"
+    depends on SYSCALL_HIJACK
+    default n
+    help
+      If enabled, this option will cause all system calls
+      that are not explicitly hooked to be hooked for 
+      passthrough. This is useful for debugging.
+
+config HIJACK_SYSCALL_MSR
+    bool "Intercept Syscall-related MSR reads & writes"
+    depends on SYSCALL_HIJACK 
+    default n
+    help
+      Allow the VMM to intercept reads and writes to MSRs
+      related to SYSCALL and SYSENTER instructions. Specifically,
+      it will intercept R/W to STAR, CSTAR, and LSTAR.
 
 endmenu
 
@@ -224,6 +264,7 @@ config SHADOW_PAGING_CACHE1
 endmenu
 
 
+
 menu "Time Management"
 config VIRTUALIZE_TIME
        bool "Enable Time virtualization"
@@ -252,6 +293,8 @@ config TIME_VIRTUALIZE_TSC
         
 endmenu
 
+
+
 menu "Symbiotic Functions"
 
 config SYMBIOTIC
@@ -382,12 +425,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"
@@ -403,7 +446,20 @@ config DEBUG_DEV_MGR
        help 
          This turns on debugging for the device manager
 
+config DEBUG_VNET
+        depends on EXPERIMENTAL && VNET
+        bool "Enable Vnet Debug in Palacios"
+        default n
+        help
+          Enable the Vnet debug in Palacios
 
+config DEBUG_SYSCALL_HIJACK
+        bool "Enable Syscall Hijack Debug in Palacios"
+        default n
+        depends on DEBUG_ON && SYSCALL_HIJACK
+        help
+          Enable Debugging printouts for syscall hijacking
+          code in Palacios
 
 
 endmenu