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
17 This enables the necesary options to compile Palacios with Kitten
20 bool "OLD Linux (Built in) -- to be deprecated"
21 select BUILT_IN_STDLIB
25 This enables the necessary options to compile Palacios with Linux 2.6
26 Currently, this is in development, and only 2.6.32 is verified to work
31 select BUILT_IN_STDLIB
32 select BUILT_IN_STRDUP
37 This enables the necessary options to compile Palacios as a Linux module
42 string "Linux Kernel Source directory"
43 default "/usr/src/linux"
45 This is the directory containing the linux source for the kernel module to be built
50 This enables the necesary options to compile Palacios with Kitten
55 Choose this to compile Palacios for a Generic Host OS
61 bool "Red Storm (Cray XT3/XT4)"
63 Support for Cray XT3 and XT4 systems.
66 bool "AMD SVM Support"
69 Compile with support for AMD SVM
72 bool "Intel VMX Support"
75 Compile with support for Intel VMX
80 bool "Compile with Frame pointers"
83 Compiles the Palacios library with Frame pointers
86 bool "Compile with Debug Information"
89 Compiles the Palacios library with debugging symbols
96 bool "XED decoder library"
99 This uses the XED decoder library from pintools
102 bool "Internal Palacios decoder"
104 This selects the internal V3Vee x86 decoder
107 bool "QUIX86 decoder"
109 This selects the QUIX86 decoder library
112 bool "QUIX86 decoder debug version"
114 This selects the QUIX86 decoder library compiled w/o optimization
119 menu "Supported host OS features"
121 config MEM_BLOCK_SIZE
122 int "Allocation size for underlying VM memory"
125 This is the default size in bytes of the underlying memory allocations used for the base memory regions.
126 A good default value is 128MB (134217728 or 0x8000000 bytes). Note that the host interface must be able
127 to provide contiguous memory of at least this size in order for VMs to typically work. This
128 value can be overriden via a load-time option, provided the host supports this.
130 config ALIGNED_PG_ALLOC
131 bool "Host support for aligned page allocations"
134 Select this if your OS supports allocating memory pages using an alignment. This is required
135 if you want Palacios to run with large page table pages.
138 int "Maximum number of cpus"
142 Specifies the maximum number of hardware CPUs supported by the OS
143 For uniprocessor environments, set this to 1
147 source "palacios/src/interfaces/Kconfig"
149 menu "Virtual core specialization"
152 bool "Use custom CPU information (vendor, etc)"
155 If set, the CPU information will be for a special V3VEE vendor.
156 This should result in identical guest kernel setup, regardless
157 of the underlying hardware, but it also means that the guest kernel
158 has no chance of employing CPU-specific bug fixes.
160 config STRICT_MSR_SEMANTICS
161 bool "Use strict RDMSR/WRMSR semantics"
164 Use strict MSR semantics - when an unhandled MSR is read or written,
165 a GPF is generated. This is typically usd with CUSTOM_CPU_TYPE on.
168 bool "Floating point context switching"
171 If set, floating point is handled for context switches
172 (VM1->VM2->VM1 and/or VM->HOST->VM). This can be disabled
173 for environments where a single VM is the only user of FP.
174 Note that even if disabled, FP save/restore code is included
175 for support of checkpoint/restore.
177 config LAZY_FP_SWITCH
178 bool "Use host-based lazy floating point context switching"
179 depends on FP_SWITCH && HOST_LAZY_FPU_SWITCH
182 When true, the host's lazy floating point save/restore
183 mechanism is notified on each exit and entry. If false,
184 the floating point state is explicitly saved on each exit
185 and restored on each entry---this save/restore is entirely
191 source "palacios/src/extensions/Kconfig"
194 bool "Enable VMM telemetry support"
197 Enable the telemetry framework in Palacios
199 This is a framwork that allows components of palacios to record
200 information that is periodically reported to the log output.
201 Telemetry is automatically collected for vmexits. Subsystem telemetry
202 is configured separately
205 config SHADOW_PAGING_TELEMETRY
206 bool "Enable Shadow Paging Telemetry"
210 Enable telemetry information for shadow paging
213 bool "Enable PMU telemetry"
215 depends on TELEMETRY && HOST_PMU
217 Enable telemetry information for a range of PMU counters
218 This causes the currently configured PMU counts to be printed
220 config PWRSTAT_TELEMETRY
221 bool "Enable power statistics telemetry"
223 depends on TELEMETRY && HOST_PWRSTAT
225 Enable telemetry information for power/energy counters
229 bool "Enable Experimental options"
232 This allows the selection of experimental features. This includes incomplete or unreviewed code.
233 Only enable this feature if you are working on the features in question.
234 IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features.
235 Any code that violates this will be immediately deleted without warning.
237 The purpose of this option is to allow features under development to be committed to the mainline
238 to more easily track changes and provide access to multiple developers
241 bool "Enable Checkpointing"
244 Enable checkpointing functionality (save/load VMs)
246 config LIVE_MIGRATION
247 bool "Enable Live Migration"
248 depends on CHECKPOINT
251 Enable live migration functionality (send/receive VMs)
253 config DEBUG_CHECKPOINT
254 bool "Enable Checkpointing and Live Migration Debugging Output"
255 depends on CHECKPOINT
258 Generate output from the debugging statements in checkpointing and live migration
264 source "Kconfig.stdlibs"
267 menu "Virtual Paging"
270 bool "Enable shadow paging"
273 Enables shadow paging for virtual machines
276 config SHADOW_PAGING_VTLB
279 depends on SHADOW_PAGING
281 Enables Virtual TLB implemenation for shadow paging
284 config DEBUG_SHDW_PG_VTLB
285 bool "Enable VTLB debugging"
287 depends on SHADOW_PAGING_VTLB
289 Enables debugging messages for VTLB implementation
291 config SHADOW_PAGING_CACHE1
292 bool "Shadow Page Cache (1)"
294 depends on SHADOW_PAGING
296 Enables caching implemenation for shadow paging
301 menu "Symbiotic Functions"
304 bool "Enable Symbiotic Functionality"
307 Enable Symbiotic components of the VMM.
308 This includes the SymSpy interface.
311 bool "Symbiotic upcalls"
313 depends on SYMBIOTIC && EXPERIMENTAL
315 Enables the Symbiotic upcall interface
320 depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
322 This enables the SwapBypass architecture
324 config SWAPBYPASS_TELEMETRY
325 bool "Enable SwapBypass Telemetry"
327 depends on TELEMETRY && SWAPBYPASS
329 Enable the telemetry information for the SwapBypass subsystem
332 bool "Symbiotic Modules"
334 depends on EXPERIMENTAL
335 # depends on SYMBIOTIC
337 Enable Symbiotic module loading
345 bool "Enable Vnet in Palacios"
348 Enable the Vnet in Palacios
352 bool "Enable Vnet Debug in Palacios"
355 Enable the Vnet debug in Palacios
360 source "palacios/src/gears/Kconfig"
362 menu "Debug configuration"
364 ## Is unwind information useful
367 bool "Enable Debugging"
370 This turns on debugging support
378 This turns on debugging for the AMD SVM-specific code
385 This turns on debugging for the Intel VT-specific code
388 config DEBUG_SHADOW_PAGING
393 This turns on debugging for the shadow paging system
396 config DEBUG_NESTED_PAGING
401 This turns on debugging for the nested paging system
404 config DEBUG_CTRL_REGS
405 bool "Control registers"
409 This turns on debugging for the control register handlers
412 config DEBUG_INTERRUPTS
417 This turns on debugging for the interrupt system
424 This turns on debugging of system time virtualization
426 config DEBUG_SCHEDULER
431 This turns on debugging for scheduler
433 config DEBUG_CPU_MAPPER
438 This turns on debugging for CPU Mapper
445 This turns on debugging for the IO handlers
448 config DEBUG_EMULATOR
449 bool "Instruction Emulator"
453 This turns on debugging for the Instruction Emulator
457 bool "Instruction Decoder"
461 This turns on debugging for the selected instruction decoder
468 This turns on debugging for the halt instruction handler
475 This turns on debugging for the mwait and monitor instruction handlers
478 bool "Device Manager"
482 This turns on debugging for the device manager
484 config DEBUG_MEM_ERRORS
485 bool "Verbose memory errors"
489 This turns on debugging for memory translations and lookups
492 bool "Lock debugging (if host supports it)"
496 This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support.
498 config DEBUG_MEM_ALLOC
499 bool "Memory allocation debugging (if host supports it)"
503 This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
509 menu "BIOS Selection"
512 prompt "Boot Code Selection"
515 Select which BIOSes to map into the default PC Class Hardware Configuration
518 bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
520 Use the SEABIOS and SEABIOS-VGA Boot code
524 bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
526 Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
530 bool "Use a user-specified BIOS"
532 Use a user-specified BIOS
539 string "Path to pre-built SEABIOS binary"
541 default "./bios/seabios/out/bios.bin"
543 Path to the SEABIOS binary to use
545 config SEABIOSVGA_PATH
546 string "Path to pre-built SEABIOS-VGA binary"
548 default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
550 This is the SEABIOS-compatible vgabios that will be used for the guest
552 config BOCHSBIOS_PATH
553 string "Path to pre-built BOCHS BIOS binary"
555 default "./bios/rombios/BIOS-bochs-latest"
557 This is the rombios that will be used for the guests
559 config BOCHSBIOSVGA_PATH
560 string "Path to pre-built BOCHS-compatible VGABIOS binary"
562 default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
564 This is the vgabios that will be used for the guests
566 config OTHERBIOS_PATH
567 string "Path to user-specified Boot Code"
570 This is a completely user-determined blob that will be mapped into the guest
571 No VGA BIOS will be mapped!
574 hex "Starting address (linear address) of BIOS"
575 range 0xe0000 0xe0000 if SEABIOS
576 range 0xf0000 0xf0000 if BOCHSBIOS
578 This is the starting address (linear address) of the BIOS code
582 config VMXASSIST_PATH
583 string "Path to pre-built VMXASSIST binary"
585 default "./bios/vmxassist/vmxassist.bin"
587 This is vmxassist image to boot real mode guests on
593 source "palacios/src/devices/Kconfig"