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
60 source "Kconfig.stdlibs"
63 bool "Red Storm (Cray XT3/XT4)"
65 Support for Cray XT3 and XT4 systems.
68 bool "AMD SVM Support"
71 Compile with support for AMD SVM
74 bool "Intel VMX Support"
77 Compile with support for Intel VMX
82 bool "Compile with Frame pointers"
85 Compiles the Palacios library with Frame pointers
88 bool "Compile with Debug Information"
91 Compiles the Palacios library with debugging symbols
98 bool "XED decoder library"
101 This uses the XED decoder library from pintools
104 bool "Internal Palacios decoder"
106 This selects the internal V3Vee x86 decoder
109 bool "QUIX86 decoder"
111 This selects the QUIX86 decoder library
114 bool "QUIX86 decoder debug version"
116 This selects the QUIX86 decoder library compiled w/o optimization
121 menu "Supported host OS features"
123 config MEM_BLOCK_SIZE
124 int "Allocation size for underlying VM memory"
127 This is the default size in bytes of the underlying memory allocations used for the base memory regions.
128 A good default value is 128MB (134217728 or 0x8000000 bytes). Note that the host interface must be able
129 to provide contiguous memory of at least this size in order for VMs to typically work. This
130 value can be overriden via a load-time option, provided the host supports this.
132 config ALIGNED_PG_ALLOC
133 bool "Host support for aligned page allocations"
136 Select this if your OS supports allocating memory pages using an alignment. This is required
137 if you want Palacios to run with large page table pages.
140 int "Maximum number of cpus"
144 Specifies the maximum number of hardware CPUs supported by the OS
145 For uniprocessor environments, set this to 1
149 source "palacios/src/interfaces/Kconfig"
151 menu "Virtual core specialization"
154 bool "Use custom CPU information (vendor, etc)"
157 If set, the CPU information will be for a special V3VEE vendor.
158 This should result in identical guest kernel setup, regardless
159 of the underlying hardware, but it also means that the guest kernel
160 has no chance of employing CPU-specific bug fixes.
162 config STRICT_MSR_SEMANTICS
163 bool "Use strict RDMSR/WRMSR semantics"
166 Use strict MSR semantics - when an unhandled MSR is read or written,
167 a GPF is generated. This is typically usd with CUSTOM_CPU_TYPE on.
170 bool "Floating point context switching"
173 If set, floating point is handled for context switches
174 (VM1->VM2->VM1 and/or VM->HOST->VM). This can be disabled
175 for environments where a single VM is the only user of FP.
176 Note that even if disabled, FP save/restore code is included
177 for support of checkpoint/restore.
179 config LAZY_FP_SWITCH
180 bool "Use host-based lazy floating point context switching"
181 depends on FP_SWITCH && HOST_LAZY_FPU_SWITCH
184 When true, the host's lazy floating point save/restore
185 mechanism is notified on each exit and entry. If false,
186 the floating point state is explicitly saved on each exit
187 and restored on each entry---this save/restore is entirely
193 source "palacios/src/extensions/Kconfig"
196 bool "Enable VMM telemetry support"
199 Enable the telemetry framework in Palacios
201 This is a framwork that allows components of palacios to record
202 information that is periodically reported to the log output.
203 Telemetry is automatically collected for vmexits. Subsystem telemetry
204 is configured separately
207 config SHADOW_PAGING_TELEMETRY
208 bool "Enable Shadow Paging Telemetry"
212 Enable telemetry information for shadow paging
215 bool "Enable PMU telemetry"
217 depends on TELEMETRY && HOST_PMU
219 Enable telemetry information for a range of PMU counters
220 This causes the currently configured PMU counts to be printed
222 config PWRSTAT_TELEMETRY
223 bool "Enable power statistics telemetry"
225 depends on TELEMETRY && HOST_PWRSTAT
227 Enable telemetry information for power/energy counters
231 bool "Enable Experimental options"
234 This allows the selection of experimental features. This includes incomplete or unreviewed code.
235 Only enable this feature if you are working on the features in question.
236 IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features.
237 Any code that violates this will be immediately deleted without warning.
239 The purpose of this option is to allow features under development to be committed to the mainline
240 to more easily track changes and provide access to multiple developers
243 bool "Enable Checkpointing"
246 Enable checkpointing functionality (save/load VMs)
248 config LIVE_MIGRATION
249 bool "Enable Live Migration"
250 depends on CHECKPOINT
253 Enable live migration functionality (send/receive VMs)
255 config DEBUG_CHECKPOINT
256 bool "Enable Checkpointing and Live Migration Debugging Output"
257 depends on CHECKPOINT
260 Generate output from the debugging statements in checkpointing and live migration
265 menu "Debug Configuration"
267 ## Is unwind information useful
270 bool "Enable Debugging"
273 This turns on debugging support
281 This turns on debugging for the AMD SVM-specific code
288 This turns on debugging for the Intel VT-specific code
291 config DEBUG_SHADOW_PAGING
296 This turns on debugging for the shadow paging system
299 config DEBUG_NESTED_PAGING
304 This turns on debugging for the nested paging system
307 config DEBUG_CTRL_REGS
308 bool "Control registers"
312 This turns on debugging for the control register handlers
315 config DEBUG_INTERRUPTS
320 This turns on debugging for the interrupt system
327 This turns on debugging of system time virtualization
329 config DEBUG_SCHEDULER
334 This turns on debugging for scheduler
336 config DEBUG_CPU_MAPPER
341 This turns on debugging for CPU Mapper
348 This turns on debugging for the IO handlers
351 config DEBUG_EMULATOR
352 bool "Instruction Emulator"
356 This turns on debugging for the Instruction Emulator
360 bool "Instruction Decoder"
364 This turns on debugging for the selected instruction decoder
371 This turns on debugging for the halt instruction handler
378 This turns on debugging for the mwait and monitor instruction handlers
381 bool "Device Manager"
385 This turns on debugging for the device manager
387 config DEBUG_MEM_ERRORS
388 bool "Verbose memory errors"
392 This turns on debugging for memory translations and lookups
395 bool "Lock debugging (if host supports it)"
399 This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support.
401 config DEBUG_MEM_ALLOC
402 bool "Memory allocation debugging (if host supports it)"
406 This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
414 menu "Virtual Paging"
417 bool "Enable nested paging"
420 Enable nested paging (should always be on)
423 bool "Enable shadow paging"
426 Enables shadow paging for virtual machines
429 config SHADOW_PAGING_VTLB
432 depends on SHADOW_PAGING
434 Enables Virtual TLB implemenation for shadow paging
435 Virtual TLB now uses PAE so there are no 4 GB restrictions
438 config DEBUG_SHDW_PG_VTLB
439 bool "Enable VTLB debugging"
441 depends on SHADOW_PAGING_VTLB
443 Enables debugging messages for VTLB implementation
445 config SHADOW_PAGING_CACHE
446 bool "Shadow Page Cache"
448 depends on SHADOW_PAGING && EXPERIMENTAL
450 Enables caching implementation of shadow paging
452 config DEBUG_SHADOW_PAGING_CACHE
453 bool "Enable Shadow Page Cache Debugging"
455 depends on SHADOW_PAGING_CACHE
457 Enables debugging messages for the VTLB + Caching implementation
459 #config SHADOW_PAGING_KVM
460 # bool "KVM-style Shadow Pager"
462 # depends on SHADOW_PAGING && EXPERIMENTAL
464 # Enables shadow pager derived from KVM
465 # You probably do not want this and it will probably not compile!
467 #config DEBUG_SHADOW_PAGING_KVM
468 # bool "Enable KVM-style Shadow Pager Debugging"
470 # depends on SHADOW_PAGING_KVM
472 # Enables debugging messages for the KVM-style shadow pager
476 bool "Enable swapping"
478 depends on (SHADOW_PAGING || NESTED_PAGING) && FILE
480 Enables swapping of regions of guest physical memory to a file
482 config DEBUG_SWAPPING
483 bool "Enable swapping debugging"
487 Provides debugging output from the swapping system
490 bool "Enable memory access tracking"
492 depends on SHADOW_PAGING || NESTED_PAGING
494 Allows tracking of memory accesses on a page granularity
496 config DEBUG_MEM_TRACK
497 bool "Enable memory access tracking debugging"
501 Provides debugging output for memory access tracking
506 source "palacios/src/devices/Kconfig"
508 menu "Boot Environments"
514 prompt "Boot Code Selection"
517 Select which BIOSes to map into the default PC Class Hardware Configuration
520 bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
522 Use the SEABIOS and SEABIOS-VGA Boot code
526 bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
528 Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
532 bool "Use a user-specified BIOS"
534 Use a user-specified BIOS
540 string "Path to pre-built SEABIOS binary"
542 default "./bios/seabios/out/bios.bin"
544 Path to the SEABIOS binary to use
546 config SEABIOSVGA_PATH
547 string "Path to pre-built SEABIOS-VGA binary"
549 default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
551 This is the SEABIOS-compatible vgabios that will be used for the guest
553 config BOCHSBIOS_PATH
554 string "Path to pre-built BOCHS BIOS binary"
556 default "./bios/rombios/BIOS-bochs-latest"
558 This is the rombios that will be used for the guests
560 config BOCHSBIOSVGA_PATH
561 string "Path to pre-built BOCHS-compatible VGABIOS binary"
563 default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
565 This is the vgabios that will be used for the guests
567 config OTHERBIOS_PATH
568 string "Path to user-specified Boot Code"
571 This is a completely user-determined blob that will be mapped into the guest
572 No VGA BIOS will be mapped!
575 hex "Starting address (linear address) of BIOS"
576 range 0xe0000 0xe0000 if SEABIOS
577 range 0xf0000 0xf0000 if BOCHSBIOS
579 This is the starting address (linear address) of the BIOS code
583 config VMXASSIST_PATH
584 string "Path to pre-built VMXASSIST binary"
586 default "./bios/vmxassist/vmxassist.bin"
588 This is vmxassist image to boot real mode guests on
596 bool "Support Multiboot2-compliant boot"
599 If set, it is possible to boot a multiboot2 compliant
602 config DEBUG_MULTIBOOT
604 bool "Enable Multiboot2 debugging in Palacios"
607 Enable Multiboot2 debugging output
617 bool "Enable Symbiotic Functionality"
621 Enable Symbiotic components of the VMM.
622 This includes the SymSpy interface.
625 bool "Symbiotic upcalls"
627 depends on SYMBIOTIC && EXPERIMENTAL
629 Enables the Symbiotic upcall interface
634 depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
636 This enables the SwapBypass architecture
638 config SWAPBYPASS_TELEMETRY
639 bool "Enable SwapBypass Telemetry"
641 depends on TELEMETRY && SWAPBYPASS
643 Enable the telemetry information for the SwapBypass subsystem
646 bool "Symbiotic Modules"
648 depends on EXPERIMENTAL && SYMBIOTIC
650 Enable Symbiotic module loading
658 bool "Enable Vnet in Palacios"
661 Enable the Vnet in Palacios
665 bool "Enable Vnet Debug in Palacios"
668 Enable the Vnet debug in Palacios
673 source "palacios/src/gears/Kconfig"
679 bool "Support Hybrid Virtual Machines"
683 If set, it is possible to make VMs that are partitioned
684 (cores, memory, devices, hardware access, etc) into
685 a part ("the ROS") that supports normal VM operation and
686 a part ("the HRT") that supports Hybrid Run-Times,
687 for example Nautilus-based HRTs for parallel languages.
691 bool "Enable HVM debugging in Palacios"
694 Enable HVM debugging output