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 nested paging"
273 Enable nested paging (should always be on)
276 bool "Enable shadow paging"
279 Enables shadow paging for virtual machines
282 config SHADOW_PAGING_VTLB
285 depends on SHADOW_PAGING
287 Enables Virtual TLB implemenation for shadow paging
288 Virtual TLB now uses PAE so there are no 4 GB restrictions
291 config DEBUG_SHDW_PG_VTLB
292 bool "Enable VTLB debugging"
294 depends on SHADOW_PAGING_VTLB
296 Enables debugging messages for VTLB implementation
298 config SHADOW_PAGING_CACHE
299 bool "Shadow Page Cache"
301 depends on SHADOW_PAGING && EXPERIMENTAL
303 Enables caching implementation of shadow paging
305 config DEBUG_SHADOW_PAGING_CACHE
306 bool "Enable Shadow Page Cache Debugging"
308 depends on SHADOW_PAGING_CACHE
310 Enables debugging messages for the VTLB + Caching implementation
312 #config SHADOW_PAGING_KVM
313 # bool "KVM-style Shadow Pager"
315 # depends on SHADOW_PAGING && EXPERIMENTAL
317 # Enables shadow pager derived from KVM
318 # You probably do not want this and it will probably not compile!
320 #config DEBUG_SHADOW_PAGING_KVM
321 # bool "Enable KVM-style Shadow Pager Debugging"
323 # depends on SHADOW_PAGING_KVM
325 # Enables debugging messages for the KVM-style shadow pager
329 bool "Enable swapping"
331 depends on (SHADOW_PAGING || NESTED_PAGING) && FILE
333 Enables swapping of regions of guest physical memory to a file
335 config DEBUG_SWAPPING
336 bool "Enable swapping debugging"
340 Provides debugging output from the swapping system
343 menu "Symbiotic Functions"
346 bool "Enable Symbiotic Functionality"
349 Enable Symbiotic components of the VMM.
350 This includes the SymSpy interface.
353 bool "Symbiotic upcalls"
355 depends on SYMBIOTIC && EXPERIMENTAL
357 Enables the Symbiotic upcall interface
362 depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
364 This enables the SwapBypass architecture
366 config SWAPBYPASS_TELEMETRY
367 bool "Enable SwapBypass Telemetry"
369 depends on TELEMETRY && SWAPBYPASS
371 Enable the telemetry information for the SwapBypass subsystem
374 bool "Symbiotic Modules"
376 depends on EXPERIMENTAL
377 # depends on SYMBIOTIC
379 Enable Symbiotic module loading
387 bool "Enable Vnet in Palacios"
390 Enable the Vnet in Palacios
394 bool "Enable Vnet Debug in Palacios"
397 Enable the Vnet debug in Palacios
402 source "palacios/src/gears/Kconfig"
404 menu "Debug configuration"
406 ## Is unwind information useful
409 bool "Enable Debugging"
412 This turns on debugging support
420 This turns on debugging for the AMD SVM-specific code
427 This turns on debugging for the Intel VT-specific code
430 config DEBUG_SHADOW_PAGING
435 This turns on debugging for the shadow paging system
438 config DEBUG_NESTED_PAGING
443 This turns on debugging for the nested paging system
446 config DEBUG_CTRL_REGS
447 bool "Control registers"
451 This turns on debugging for the control register handlers
454 config DEBUG_INTERRUPTS
459 This turns on debugging for the interrupt system
466 This turns on debugging of system time virtualization
468 config DEBUG_SCHEDULER
473 This turns on debugging for scheduler
475 config DEBUG_CPU_MAPPER
480 This turns on debugging for CPU Mapper
487 This turns on debugging for the IO handlers
490 config DEBUG_EMULATOR
491 bool "Instruction Emulator"
495 This turns on debugging for the Instruction Emulator
499 bool "Instruction Decoder"
503 This turns on debugging for the selected instruction decoder
510 This turns on debugging for the halt instruction handler
517 This turns on debugging for the mwait and monitor instruction handlers
520 bool "Device Manager"
524 This turns on debugging for the device manager
526 config DEBUG_MEM_ERRORS
527 bool "Verbose memory errors"
531 This turns on debugging for memory translations and lookups
534 bool "Lock debugging (if host supports it)"
538 This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support.
540 config DEBUG_MEM_ALLOC
541 bool "Memory allocation debugging (if host supports it)"
545 This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
551 menu "BIOS Selection"
554 prompt "Boot Code Selection"
557 Select which BIOSes to map into the default PC Class Hardware Configuration
560 bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
562 Use the SEABIOS and SEABIOS-VGA Boot code
566 bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
568 Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
572 bool "Use a user-specified BIOS"
574 Use a user-specified BIOS
581 string "Path to pre-built SEABIOS binary"
583 default "./bios/seabios/out/bios.bin"
585 Path to the SEABIOS binary to use
587 config SEABIOSVGA_PATH
588 string "Path to pre-built SEABIOS-VGA binary"
590 default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
592 This is the SEABIOS-compatible vgabios that will be used for the guest
594 config BOCHSBIOS_PATH
595 string "Path to pre-built BOCHS BIOS binary"
597 default "./bios/rombios/BIOS-bochs-latest"
599 This is the rombios that will be used for the guests
601 config BOCHSBIOSVGA_PATH
602 string "Path to pre-built BOCHS-compatible VGABIOS binary"
604 default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
606 This is the vgabios that will be used for the guests
608 config OTHERBIOS_PATH
609 string "Path to user-specified Boot Code"
612 This is a completely user-determined blob that will be mapped into the guest
613 No VGA BIOS will be mapped!
616 hex "Starting address (linear address) of BIOS"
617 range 0xe0000 0xe0000 if SEABIOS
618 range 0xf0000 0xf0000 if BOCHSBIOS
620 This is the starting address (linear address) of the BIOS code
624 config VMXASSIST_PATH
625 string "Path to pre-built VMXASSIST binary"
627 default "./bios/vmxassist/vmxassist.bin"
629 This is vmxassist image to boot real mode guests on
635 source "palacios/src/devices/Kconfig"