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
34 select BUILT_IN_STRTOX
35 select BUILT_IN_STRTOI
40 This enables the necessary options to compile Palacios as a Linux module
45 string "Linux Kernel Source directory"
46 default "/usr/src/linux"
48 This is the directory containing the linux source for the kernel module to be built
53 This enables the necesary options to compile Palacios with Minix
60 This enables the necessary options to compile Palacios
61 for inclusion in the Nautilus kernel
65 string "Nautilus Kernel Source directory"
68 This is the directory containing the
75 Choose this to compile Palacios for a Generic Host OS
80 source "Kconfig.stdlibs"
83 bool "Red Storm (Cray XT3/XT4)"
85 Support for Cray XT3 and XT4 systems.
88 bool "AMD SVM Support"
91 Compile with support for AMD SVM
94 bool "Intel VMX Support"
97 Compile with support for Intel VMX
102 bool "Compile with Frame pointers"
105 Compiles the Palacios library with Frame pointers
108 bool "Compile with Debug Information"
111 Compiles the Palacios library with debugging symbols
118 bool "XED decoder library"
121 This uses the XED decoder library from pintools
124 bool "Internal Palacios decoder"
126 This selects the internal V3Vee x86 decoder
129 bool "QUIX86 decoder"
131 This selects the QUIX86 decoder library
134 bool "QUIX86 decoder debug version"
136 This selects the QUIX86 decoder library compiled w/o optimization
141 menu "Supported host OS features"
143 config MEM_BLOCK_SIZE
144 int "Allocation size for underlying VM memory"
147 This is the default size in bytes of the underlying memory allocations used for the base memory regions.
148 A good default value is 128MB (134217728 or 0x8000000 bytes). Note that the host interface must be able
149 to provide contiguous memory of at least this size in order for VMs to typically work. This
150 value can be overriden via a load-time option, provided the host supports this.
152 config ALIGNED_PG_ALLOC
153 bool "Host support for aligned page allocations"
156 Select this if your OS supports allocating memory pages using an alignment. This is required
157 if you want Palacios to run with large page table pages.
160 int "Maximum number of cpus"
164 Specifies the maximum number of hardware CPUs supported by the OS
165 For uniprocessor environments, set this to 1
169 source "palacios/src/interfaces/Kconfig"
171 menu "Virtual core specialization"
174 bool "Use custom CPU information (vendor, etc)"
177 If set, the CPU information will be for a special V3VEE vendor.
178 This should result in identical guest kernel setup, regardless
179 of the underlying hardware, but it also means that the guest kernel
180 has no chance of employing CPU-specific bug fixes.
182 config STRICT_MSR_SEMANTICS
183 bool "Use strict RDMSR/WRMSR semantics"
186 Use strict MSR semantics - when an unhandled MSR is read or written,
187 a GPF is generated. This is typically usd with CUSTOM_CPU_TYPE on.
190 bool "Floating point context switching"
193 If set, floating point is handled for context switches
194 (VM1->VM2->VM1 and/or VM->HOST->VM). This can be disabled
195 for environments where a single VM is the only user of FP.
196 Note that even if disabled, FP save/restore code is included
197 for support of checkpoint/restore.
199 config LAZY_FP_SWITCH
200 bool "Use host-based lazy floating point context switching"
201 depends on FP_SWITCH && HOST_LAZY_FPU_SWITCH
204 When true, the host's lazy floating point save/restore
205 mechanism is notified on each exit and entry. If false,
206 the floating point state is explicitly saved on each exit
207 and restored on each entry---this save/restore is entirely
211 bool "Support last-level cache partitioning"
212 depends on CACHE_INFO && EXPERIMENTAL
215 When true, <cachepart> can be used to select which page colors
216 are allowed to be used by the VM, thus limiting it to a portion
217 of the last level shared cache.
218 This is an experimental option and requires a lot of careful
219 configuration to work. In particular, memory base regions must be
220 a page size, and initial allocation of the VM may take a long
221 time depending on the host's page allocator.
223 config DEBUG_CACHEPART
224 bool "Enable debugging of cache partitioning"
228 Generate output from the debugging statements in cache partitioning
233 source "palacios/src/extensions/Kconfig"
236 bool "Enable VMM telemetry support"
239 Enable the telemetry framework in Palacios
241 This is a framwork that allows components of palacios to record
242 information that is periodically reported to the log output.
243 Telemetry is automatically collected for vmexits. Subsystem telemetry
244 is configured separately
247 config SHADOW_PAGING_TELEMETRY
248 bool "Enable Shadow Paging Telemetry"
252 Enable telemetry information for shadow paging
255 bool "Enable PMU telemetry"
257 depends on TELEMETRY && HOST_PMU
259 Enable telemetry information for a range of PMU counters
260 This causes the currently configured PMU counts to be printed
262 config PWRSTAT_TELEMETRY
263 bool "Enable power statistics telemetry"
265 depends on TELEMETRY && HOST_PWRSTAT
267 Enable telemetry information for power/energy counters
271 bool "Enable Experimental options"
274 This allows the selection of experimental features. This includes incomplete or unreviewed code.
275 Only enable this feature if you are working on the features in question.
276 IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features.
277 Any code that violates this will be immediately deleted without warning.
279 The purpose of this option is to allow features under development to be committed to the mainline
280 to more easily track changes and provide access to multiple developers
283 bool "Enable Checkpointing"
286 Enable checkpointing functionality (save/load VMs)
288 config LIVE_MIGRATION
289 bool "Enable Live Migration"
290 depends on CHECKPOINT
293 Enable live migration functionality (send/receive VMs)
295 config DEBUG_CHECKPOINT
296 bool "Enable Checkpointing and Live Migration Debugging Output"
297 depends on CHECKPOINT
300 Generate output from the debugging statements in checkpointing and live migration
305 menu "Debug Configuration"
307 ## Is unwind information useful
310 bool "Enable Debugging"
313 This turns on debugging support
321 This turns on debugging for the AMD SVM-specific code
328 This turns on debugging for the Intel VT-specific code
331 config DEBUG_SHADOW_PAGING
336 This turns on debugging for the shadow paging system
339 config DEBUG_NESTED_PAGING
344 This turns on debugging for the nested paging system
347 config DEBUG_CTRL_REGS
348 bool "Control registers"
352 This turns on debugging for the control register handlers
355 config DEBUG_INTERRUPTS
360 This turns on debugging for the interrupt system
367 This turns on debugging of system time virtualization
369 config DEBUG_SCHEDULER
374 This turns on debugging for scheduler
376 config DEBUG_CPU_MAPPER
381 This turns on debugging for CPU Mapper
388 This turns on debugging for the IO handlers
391 config DEBUG_EMULATOR
392 bool "Instruction Emulator"
396 This turns on debugging for the Instruction Emulator
400 bool "Instruction Decoder"
404 This turns on debugging for the selected instruction decoder
411 This turns on debugging for the halt instruction handler
418 This turns on debugging for the mwait and monitor instruction handlers
421 bool "Device Manager"
425 This turns on debugging for the device manager
427 config DEBUG_MEM_ERRORS
428 bool "Verbose memory errors"
432 This turns on debugging for memory translations and lookups
435 bool "Lock debugging (if host supports it)"
439 This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support.
441 config DEBUG_MEM_ALLOC
442 bool "Memory allocation debugging (if host supports it)"
446 This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
454 menu "Virtual Paging"
457 bool "Enable nested paging"
460 Enable nested paging (should always be on)
463 bool "Enable shadow paging"
466 Enables shadow paging for virtual machines
469 config SHADOW_PAGING_VTLB
472 depends on SHADOW_PAGING
474 Enables Virtual TLB implemenation for shadow paging
475 Virtual TLB now uses PAE so there are no 4 GB restrictions
478 config DEBUG_SHDW_PG_VTLB
479 bool "Enable VTLB debugging"
481 depends on SHADOW_PAGING_VTLB
483 Enables debugging messages for VTLB implementation
485 config SHADOW_PAGING_CACHE
486 bool "Shadow Page Cache"
488 depends on SHADOW_PAGING && EXPERIMENTAL
490 Enables caching implementation of shadow paging
492 config DEBUG_SHADOW_PAGING_CACHE
493 bool "Enable Shadow Page Cache Debugging"
495 depends on SHADOW_PAGING_CACHE
497 Enables debugging messages for the VTLB + Caching implementation
499 #config SHADOW_PAGING_KVM
500 # bool "KVM-style Shadow Pager"
502 # depends on SHADOW_PAGING && EXPERIMENTAL
504 # Enables shadow pager derived from KVM
505 # You probably do not want this and it will probably not compile!
507 #config DEBUG_SHADOW_PAGING_KVM
508 # bool "Enable KVM-style Shadow Pager Debugging"
510 # depends on SHADOW_PAGING_KVM
512 # Enables debugging messages for the KVM-style shadow pager
516 bool "Enable swapping"
518 depends on (SHADOW_PAGING || NESTED_PAGING) && FILE
520 Enables swapping of regions of guest physical memory to a file
522 config DEBUG_SWAPPING
523 bool "Enable swapping debugging"
527 Provides debugging output from the swapping system
530 bool "Enable memory access tracking"
532 depends on SHADOW_PAGING || NESTED_PAGING
534 Allows tracking of memory accesses on a page granularity
536 config DEBUG_MEM_TRACK
537 bool "Enable memory access tracking debugging"
541 Provides debugging output for memory access tracking
546 source "palacios/src/devices/Kconfig"
548 menu "Boot Environments"
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
580 string "Path to pre-built SEABIOS binary"
582 default "./bios/seabios/out/bios.bin"
584 Path to the SEABIOS binary to use
586 config SEABIOSVGA_PATH
587 string "Path to pre-built SEABIOS-VGA binary"
589 default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
591 This is the SEABIOS-compatible vgabios that will be used for the guest
593 config BOCHSBIOS_PATH
594 string "Path to pre-built BOCHS BIOS binary"
596 default "./bios/rombios/BIOS-bochs-latest"
598 This is the rombios that will be used for the guests
600 config BOCHSBIOSVGA_PATH
601 string "Path to pre-built BOCHS-compatible VGABIOS binary"
603 default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
605 This is the vgabios that will be used for the guests
607 config OTHERBIOS_PATH
608 string "Path to user-specified Boot Code"
611 This is a completely user-determined blob that will be mapped into the guest
612 No VGA BIOS will be mapped!
615 hex "Starting address (linear address) of BIOS"
616 range 0xe0000 0xe0000 if SEABIOS
617 range 0xf0000 0xf0000 if BOCHSBIOS
619 This is the starting address (linear address) of the BIOS code
623 config VMXASSIST_PATH
624 string "Path to pre-built VMXASSIST binary"
626 default "./bios/vmxassist/vmxassist.bin"
628 This is vmxassist image to boot real mode guests on
636 bool "Support Multiboot2-compliant boot"
639 If set, it is possible to boot a multiboot2 compliant
642 config DEBUG_MULTIBOOT
644 bool "Enable Multiboot2 debugging in Palacios"
647 Enable Multiboot2 debugging output
657 bool "Enable Symbiotic Functionality"
661 Enable Symbiotic components of the VMM.
662 This includes the SymSpy interface.
665 bool "Symbiotic upcalls"
667 depends on SYMBIOTIC && EXPERIMENTAL
669 Enables the Symbiotic upcall interface
674 depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
676 This enables the SwapBypass architecture
678 config SWAPBYPASS_TELEMETRY
679 bool "Enable SwapBypass Telemetry"
681 depends on TELEMETRY && SWAPBYPASS
683 Enable the telemetry information for the SwapBypass subsystem
686 bool "Symbiotic Modules"
688 depends on EXPERIMENTAL && SYMBIOTIC
690 Enable Symbiotic module loading
698 bool "Enable Vnet in Palacios"
701 Enable the Vnet in Palacios
705 bool "Enable Vnet Debug in Palacios"
708 Enable the Vnet debug in Palacios
713 source "palacios/src/gears/Kconfig"
719 bool "Support Hybrid Virtual Machines"
723 If set, it is possible to make VMs that are partitioned
724 (cores, memory, devices, hardware access, etc) into
725 a part ("the ROS") that supports normal VM operation and
726 a part ("the HRT") that supports Hybrid Run-Times,
727 for example Nautilus-based HRTs for parallel languages.
730 prompt "HVM Magic Upcall Mechanism"
731 default HVM_UPCALL_MAGIC_GPF
733 config HVM_UPCALL_MAGIC_GPF
736 Upcall using a #GP with a well-known magic error code
738 config HVM_UPCALL_MAGIC_PF
741 Upcall using a #PF with a well-known magic address and error code
743 config HVM_UPCALL_MAGIC_SWINT
744 bool "Software interrupt"
746 Upcall using a software interrupt with a vector specified by
747 the VM's configuration
754 bool "Enable HVM debugging in Palacios"
757 Enable HVM debugging output