1 mainmenu "Palacios VMM Configuration"
3 menu "Target Configuration"
7 prompt "Target Host OS"
12 select BUILT_IN_STDLIB
13 select BUILT_IN_STRCASECMP
15 select ALIGNED_PG_ALLOC
18 This enables the necesary options to compile Palacios with Kitten
21 bool "OLD Linux (Built in) -- to be deprecated"
22 select BUILT_IN_STDLIB
26 This enables the necessary options to compile Palacios with Linux 2.6
27 Currently, this is in development, and only 2.6.32 is verified to work
32 select BUILT_IN_STDLIB
33 select BUILT_IN_STRDUP
38 This enables the necessary options to compile Palacios as a Linux module
43 string "Linux Kernel Source directory"
44 default "/usr/src/linux"
46 This is the directory containing the linux source for the kernel module to be built
51 This enables the necesary options to compile Palacios with Kitten
56 Choose this to compile Palacios for a Generic Host OS
62 bool "Red Storm (Cray XT3/XT4)"
64 Support for Cray XT3 and XT4 systems.
67 bool "AMD SVM Support"
70 Compile with support for AMD SVM
73 bool "Intel VMX Support"
76 Compile with support for Intel VMX
80 bool "Compile with Debug Information"
83 Compiles the Palacios library with debugging symbols
90 bool "XED decoder library"
93 This uses the XED decoder library from pintools
96 bool "Internal Palacios decoder"
98 This selects the internal V3Vee x86 decoder
103 menu "Supported host OS features"
105 config MULTITHREAD_OS
106 bool "Host support for multiple threads"
109 Select this if your OS supports multiple threads of execution. This will enable features in Palacios
110 to require the creation of additional execution threads.
113 config ALIGNED_PG_ALLOC
114 bool "Host support for aligned page allocations"
117 Select this if your OS supports allocating memory pages using an alignment. This is required
118 if you want Palacios to run with large page table pages.
121 int "Maximum number of cpus"
125 Specifies the maximum number of hardware CPUs supported by the OS
126 For uniprocessor environments, set this to 1
130 source "palacios/src/interfaces/Kconfig"
131 source "palacios/src/extensions/Kconfig"
134 bool "Enable VMM telemetry support"
137 Enable the telemetry framework in Palacios
139 This is a framwork that allows components of palacios to record
140 information that is periodically reported to the log output.
141 Telemetry is automatically collected for vmexits. Subsystem telemetry
142 is configured separately
145 config SHADOW_PAGING_TELEMETRY
146 bool "Enable Shadow Paging Telemetry"
150 Enable telemetry information for shadow paging
155 bool "Enable Experimental options"
158 This allows the selection of experimental features. This includes incomplete or unreviewed code.
159 Only enable this feature if you are working on the features in question.
160 IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features.
161 Any code that violates this will be immediately deleted without warning.
163 The purpose of this option is to allow features under development to be committed to the mainline
164 to more easily track changes and provide access to multiple developers
167 depends on EXPERIMENTAL
168 bool "Enable Vnet in Palacios"
171 Enable the Vnet in Palacios
175 bool "Enable VM inspection"
176 depends on EXPERIMENTAL
179 Enable inspection framework for vm internal state
182 bool "Enable interception and hooking of software interrupts"
183 depends on EXPERIMENTAL
186 This feature will cause the VMM to intercept the execution
187 of software interrupts (i.e. the INTn instruction) and enable
188 any INT vector to be hooked
190 config SWINTR_PASSTHROUGH
191 bool "Hook all unhandled sofware interrupts for passthrough"
192 depends on SW_INTERRUPTS
195 If enabled, this will cause all software interrupts
196 (INT instruction vectors) to be hooked for passthrough.
197 May reduce performance but useful for debugging.
199 config SYSCALL_HIJACK
200 bool "Enable System Call Hijacking"
201 depends on SW_INTERRUPTS
204 Enable the VMM to hijack system calls executed by the guest.
205 If enabled, the VMM will hook execution of INT 80
206 (support for Fast-System Calls coming soon)
208 config SYSCALL_PASSTHROUGH
209 bool "Hook all unhandled system calls for passthrough"
210 depends on SYSCALL_HIJACK
213 If enabled, this option will cause all system calls
214 that are not explicitly hooked to be hooked for
215 passthrough. This is useful for debugging.
217 config HIJACK_SYSCALL_MSR
218 bool "Intercept Syscall-related MSR reads & writes"
219 depends on SYSCALL_HIJACK
222 Allow the VMM to intercept reads and writes to MSRs
223 related to SYSCALL and SYSENTER instructions. Specifically,
224 it will intercept R/W to STAR, CSTAR, and LSTAR.
229 source "Kconfig.stdlibs"
232 menu "Virtual Paging"
235 bool "Enable shadow paging"
238 Enables shadow paging for virtual machines
241 config SHADOW_PAGING_VTLB
244 depends on SHADOW_PAGING
246 Enables Virtual TLB implemenation for shadow paging
249 config DEBUG_SHDW_PG_VTLB
250 bool "Enable VTLB debugging"
252 depends on SHADOW_PAGING_VTLB
254 Enables debugging messages for VTLB implementation
256 config SHADOW_PAGING_CACHE1
257 bool "Shadow Page Cache (1)"
259 depends on SHADOW_PAGING
261 Enables caching implemenation for shadow paging
268 menu "Time Management"
269 config VIRTUALIZE_TIME
270 bool "Enable Time virtualization"
273 Enables the timer virtualization extensions
275 config TIME_HIDE_VM_COST
276 bool "Hide VMM Run Cost"
278 depends on VIRTUALIZE_TIME
280 Offset guest time from host time sufficiently to hide the cost of
281 running in the virtual machine. This can aid the consistency of
282 time between multiple timers, but can cause the guest to run
283 a good bit slower than the host in VM-intensive parts of the code.
285 config TIME_VIRTUALIZE_TSC
286 bool "Fully virtualize guest TSC"
288 depends on VIRTUALIZE_TIME
290 Virtualize the processor time stamp counter in the guest,
291 generally increasing consistency between various time sources
292 but also potentially making guest time run slower than real time.
298 menu "Symbiotic Functions"
301 bool "Enable Symbiotic Functionality"
304 Enable Symbiotic components of the VMM.
305 This includes the SymSpy interface.
308 bool "Symbiotic upcalls"
310 depends on SYMBIOTIC && EXPERIMENTAL
312 Enables the Symbiotic upcall interface
317 depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
319 This enables the SwapBypass architecture
321 config SWAPBYPASS_TELEMETRY
322 bool "Enable SwapBypass Telemetry"
324 depends on TELEMETRY && SWAPBYPASS
326 Enable the telemetry information for the SwapBypass subsystem
329 bool "Symbiotic Modules"
331 depends on EXPERIMENTAL
332 # depends on SYMBIOTIC
334 Enable Symbiotic module loading
341 menu "Debug configuration"
343 config CONFIG_DEBUG_INFO
344 bool "Compile with Debug information"
347 This adds the -g flag to the compilation flags
350 ## Is unwind information useful
353 bool "Enable Debugging"
356 This turns on debugging support
364 This turns on debugging for the AMD SVM-specific code
371 This turns on debugging for the Intel VT-specific code
374 config DEBUG_SHADOW_PAGING
379 This turns on debugging for the shadow paging system
382 config DEBUG_NESTED_PAGING
387 This turns on debugging for the nested paging system
390 config DEBUG_CTRL_REGS
391 bool "Control registers"
395 This turns on debugging for the control register handlers
398 config DEBUG_INTERRUPTS
403 This turns on debugging for the interrupt system
410 This turns on debugging of system time virtualization
417 This turns on debugging for the IO handlers
420 config DEBUG_EMULATOR
421 bool "Instruction Emulator"
425 This turns on debugging for the Instruction Emulator
429 bool "Instruction Decoder"
433 This turns on debugging for the selected instruction decoder
440 This turns on debugging for the halt instruction handler
443 bool "Device Manager"
447 This turns on debugging for the device manager
450 depends on EXPERIMENTAL && VNET
451 bool "Enable Vnet Debug in Palacios"
454 Enable the Vnet debug in Palacios
456 config DEBUG_SYSCALL_HIJACK
457 bool "Enable Syscall Hijack Debug in Palacios"
459 depends on DEBUG_ON && SYSCALL_HIJACK
461 Enable Debugging printouts for syscall hijacking
468 menu "BIOS Selection"
471 string "Path to pre-built ROMBIOS binary"
472 default "./bios/rombios/BIOS-bochs-latest"
474 This is the rombios that will be used for the guests
477 string "Path to pre-built VGABIOS binary"
478 default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
480 This is the vgabios that will be used for the guests
482 config VMXASSIST_PATH
483 string "Path to pre-built VMXASSIST binary"
485 default "./bios/vmxassist/vmxassist.bin"
487 This is vmxassist image to boot real mode guests on
493 source "palacios/src/devices/Kconfig"