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
290 config DEBUG_SHDW_PG_VTLB
291 bool "Enable VTLB debugging"
293 depends on SHADOW_PAGING_VTLB
295 Enables debugging messages for VTLB implementation
297 config SHADOW_PAGING_CACHE
298 bool "Shadow Page Cache"
300 depends on SHADOW_PAGING && EXPERIMENTAL
302 Enables caching implementation of shadow paging
304 config DEBUG_SHADOW_PAGING_CACHE
305 bool "Enable Shadow Page Cache Debugging"
307 depends on SHADOW_PAGING_CACHE
309 Enables debugging messages for the VTLB + Caching implementation
311 #config SHADOW_PAGING_KVM
312 # bool "KVM-style Shadow Pager"
314 # depends on SHADOW_PAGING && EXPERIMENTAL
316 # Enables shadow pager derived from KVM
317 # You probably do not want this and it will probably not compile!
319 #config DEBUG_SHADOW_PAGING_KVM
320 # bool "Enable KVM-style Shadow Pager Debugging"
322 # depends on SHADOW_PAGING_KVM
324 # Enables debugging messages for the KVM-style shadow pager
328 menu "Symbiotic Functions"
331 bool "Enable Symbiotic Functionality"
334 Enable Symbiotic components of the VMM.
335 This includes the SymSpy interface.
338 bool "Symbiotic upcalls"
340 depends on SYMBIOTIC && EXPERIMENTAL
342 Enables the Symbiotic upcall interface
347 depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
349 This enables the SwapBypass architecture
351 config SWAPBYPASS_TELEMETRY
352 bool "Enable SwapBypass Telemetry"
354 depends on TELEMETRY && SWAPBYPASS
356 Enable the telemetry information for the SwapBypass subsystem
359 bool "Symbiotic Modules"
361 depends on EXPERIMENTAL
362 # depends on SYMBIOTIC
364 Enable Symbiotic module loading
372 bool "Enable Vnet in Palacios"
375 Enable the Vnet in Palacios
379 bool "Enable Vnet Debug in Palacios"
382 Enable the Vnet debug in Palacios
387 source "palacios/src/gears/Kconfig"
389 menu "Debug configuration"
391 ## Is unwind information useful
394 bool "Enable Debugging"
397 This turns on debugging support
405 This turns on debugging for the AMD SVM-specific code
412 This turns on debugging for the Intel VT-specific code
415 config DEBUG_SHADOW_PAGING
420 This turns on debugging for the shadow paging system
423 config DEBUG_NESTED_PAGING
428 This turns on debugging for the nested paging system
431 config DEBUG_CTRL_REGS
432 bool "Control registers"
436 This turns on debugging for the control register handlers
439 config DEBUG_INTERRUPTS
444 This turns on debugging for the interrupt system
451 This turns on debugging of system time virtualization
453 config DEBUG_SCHEDULER
458 This turns on debugging for scheduler
460 config DEBUG_CPU_MAPPER
465 This turns on debugging for CPU Mapper
472 This turns on debugging for the IO handlers
475 config DEBUG_EMULATOR
476 bool "Instruction Emulator"
480 This turns on debugging for the Instruction Emulator
484 bool "Instruction Decoder"
488 This turns on debugging for the selected instruction decoder
495 This turns on debugging for the halt instruction handler
502 This turns on debugging for the mwait and monitor instruction handlers
505 bool "Device Manager"
509 This turns on debugging for the device manager
511 config DEBUG_MEM_ERRORS
512 bool "Verbose memory errors"
516 This turns on debugging for memory translations and lookups
519 bool "Lock debugging (if host supports it)"
523 This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support.
525 config DEBUG_MEM_ALLOC
526 bool "Memory allocation debugging (if host supports it)"
530 This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
536 menu "BIOS Selection"
539 prompt "Boot Code Selection"
542 Select which BIOSes to map into the default PC Class Hardware Configuration
545 bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
547 Use the SEABIOS and SEABIOS-VGA Boot code
551 bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
553 Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
557 bool "Use a user-specified BIOS"
559 Use a user-specified BIOS
566 string "Path to pre-built SEABIOS binary"
568 default "./bios/seabios/out/bios.bin"
570 Path to the SEABIOS binary to use
572 config SEABIOSVGA_PATH
573 string "Path to pre-built SEABIOS-VGA binary"
575 default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
577 This is the SEABIOS-compatible vgabios that will be used for the guest
579 config BOCHSBIOS_PATH
580 string "Path to pre-built BOCHS BIOS binary"
582 default "./bios/rombios/BIOS-bochs-latest"
584 This is the rombios that will be used for the guests
586 config BOCHSBIOSVGA_PATH
587 string "Path to pre-built BOCHS-compatible VGABIOS binary"
589 default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
591 This is the vgabios that will be used for the guests
593 config OTHERBIOS_PATH
594 string "Path to user-specified Boot Code"
597 This is a completely user-determined blob that will be mapped into the guest
598 No VGA BIOS will be mapped!
601 hex "Starting address (linear address) of BIOS"
602 range 0xe0000 0xe0000 if SEABIOS
603 range 0xf0000 0xf0000 if BOCHSBIOS
605 This is the starting address (linear address) of the BIOS code
609 config VMXASSIST_PATH
610 string "Path to pre-built VMXASSIST binary"
612 default "./bios/vmxassist/vmxassist.bin"
614 This is vmxassist image to boot real mode guests on
620 source "palacios/src/devices/Kconfig"