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 bool "Enable memory access tracking"
345 depends on SHADOW_PAGING || NESTED_PAGING
347 Allows tracking of memory accesses on a page granularity
349 config DEBUG_MEM_TRACK
350 bool "Enable memory access tracking debugging"
354 Provides debugging output for memory access tracking
358 menu "Symbiotic Functions"
361 bool "Enable Symbiotic Functionality"
364 Enable Symbiotic components of the VMM.
365 This includes the SymSpy interface.
368 bool "Symbiotic upcalls"
370 depends on SYMBIOTIC && EXPERIMENTAL
372 Enables the Symbiotic upcall interface
377 depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
379 This enables the SwapBypass architecture
381 config SWAPBYPASS_TELEMETRY
382 bool "Enable SwapBypass Telemetry"
384 depends on TELEMETRY && SWAPBYPASS
386 Enable the telemetry information for the SwapBypass subsystem
389 bool "Symbiotic Modules"
391 depends on EXPERIMENTAL
392 # depends on SYMBIOTIC
394 Enable Symbiotic module loading
402 bool "Enable Vnet in Palacios"
405 Enable the Vnet in Palacios
409 bool "Enable Vnet Debug in Palacios"
412 Enable the Vnet debug in Palacios
417 source "palacios/src/gears/Kconfig"
419 menu "Debug configuration"
421 ## Is unwind information useful
424 bool "Enable Debugging"
427 This turns on debugging support
435 This turns on debugging for the AMD SVM-specific code
442 This turns on debugging for the Intel VT-specific code
445 config DEBUG_SHADOW_PAGING
450 This turns on debugging for the shadow paging system
453 config DEBUG_NESTED_PAGING
458 This turns on debugging for the nested paging system
461 config DEBUG_CTRL_REGS
462 bool "Control registers"
466 This turns on debugging for the control register handlers
469 config DEBUG_INTERRUPTS
474 This turns on debugging for the interrupt system
481 This turns on debugging of system time virtualization
483 config DEBUG_SCHEDULER
488 This turns on debugging for scheduler
490 config DEBUG_CPU_MAPPER
495 This turns on debugging for CPU Mapper
502 This turns on debugging for the IO handlers
505 config DEBUG_EMULATOR
506 bool "Instruction Emulator"
510 This turns on debugging for the Instruction Emulator
514 bool "Instruction Decoder"
518 This turns on debugging for the selected instruction decoder
525 This turns on debugging for the halt instruction handler
532 This turns on debugging for the mwait and monitor instruction handlers
535 bool "Device Manager"
539 This turns on debugging for the device manager
541 config DEBUG_MEM_ERRORS
542 bool "Verbose memory errors"
546 This turns on debugging for memory translations and lookups
549 bool "Lock debugging (if host supports it)"
553 This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support.
555 config DEBUG_MEM_ALLOC
556 bool "Memory allocation debugging (if host supports it)"
560 This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
566 menu "BIOS Selection"
569 prompt "Boot Code Selection"
572 Select which BIOSes to map into the default PC Class Hardware Configuration
575 bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
577 Use the SEABIOS and SEABIOS-VGA Boot code
581 bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
583 Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
587 bool "Use a user-specified BIOS"
589 Use a user-specified BIOS
596 string "Path to pre-built SEABIOS binary"
598 default "./bios/seabios/out/bios.bin"
600 Path to the SEABIOS binary to use
602 config SEABIOSVGA_PATH
603 string "Path to pre-built SEABIOS-VGA binary"
605 default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
607 This is the SEABIOS-compatible vgabios that will be used for the guest
609 config BOCHSBIOS_PATH
610 string "Path to pre-built BOCHS BIOS binary"
612 default "./bios/rombios/BIOS-bochs-latest"
614 This is the rombios that will be used for the guests
616 config BOCHSBIOSVGA_PATH
617 string "Path to pre-built BOCHS-compatible VGABIOS binary"
619 default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
621 This is the vgabios that will be used for the guests
623 config OTHERBIOS_PATH
624 string "Path to user-specified Boot Code"
627 This is a completely user-determined blob that will be mapped into the guest
628 No VGA BIOS will be mapped!
631 hex "Starting address (linear address) of BIOS"
632 range 0xe0000 0xe0000 if SEABIOS
633 range 0xf0000 0xf0000 if BOCHSBIOS
635 This is the starting address (linear address) of the BIOS code
639 config VMXASSIST_PATH
640 string "Path to pre-built VMXASSIST binary"
642 default "./bios/vmxassist/vmxassist.bin"
644 This is vmxassist image to boot real mode guests on
650 source "palacios/src/devices/Kconfig"