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 Kitten
58 Choose this to compile Palacios for a Generic Host OS
63 source "Kconfig.stdlibs"
66 bool "Red Storm (Cray XT3/XT4)"
68 Support for Cray XT3 and XT4 systems.
71 bool "AMD SVM Support"
74 Compile with support for AMD SVM
77 bool "Intel VMX Support"
80 Compile with support for Intel VMX
85 bool "Compile with Frame pointers"
88 Compiles the Palacios library with Frame pointers
91 bool "Compile with Debug Information"
94 Compiles the Palacios library with debugging symbols
101 bool "XED decoder library"
104 This uses the XED decoder library from pintools
107 bool "Internal Palacios decoder"
109 This selects the internal V3Vee x86 decoder
112 bool "QUIX86 decoder"
114 This selects the QUIX86 decoder library
117 bool "QUIX86 decoder debug version"
119 This selects the QUIX86 decoder library compiled w/o optimization
124 menu "Supported host OS features"
126 config MEM_BLOCK_SIZE
127 int "Allocation size for underlying VM memory"
130 This is the default size in bytes of the underlying memory allocations used for the base memory regions.
131 A good default value is 128MB (134217728 or 0x8000000 bytes). Note that the host interface must be able
132 to provide contiguous memory of at least this size in order for VMs to typically work. This
133 value can be overriden via a load-time option, provided the host supports this.
135 config ALIGNED_PG_ALLOC
136 bool "Host support for aligned page allocations"
139 Select this if your OS supports allocating memory pages using an alignment. This is required
140 if you want Palacios to run with large page table pages.
143 int "Maximum number of cpus"
147 Specifies the maximum number of hardware CPUs supported by the OS
148 For uniprocessor environments, set this to 1
152 source "palacios/src/interfaces/Kconfig"
154 menu "Virtual core specialization"
157 bool "Use custom CPU information (vendor, etc)"
160 If set, the CPU information will be for a special V3VEE vendor.
161 This should result in identical guest kernel setup, regardless
162 of the underlying hardware, but it also means that the guest kernel
163 has no chance of employing CPU-specific bug fixes.
165 config STRICT_MSR_SEMANTICS
166 bool "Use strict RDMSR/WRMSR semantics"
169 Use strict MSR semantics - when an unhandled MSR is read or written,
170 a GPF is generated. This is typically usd with CUSTOM_CPU_TYPE on.
173 bool "Floating point context switching"
176 If set, floating point is handled for context switches
177 (VM1->VM2->VM1 and/or VM->HOST->VM). This can be disabled
178 for environments where a single VM is the only user of FP.
179 Note that even if disabled, FP save/restore code is included
180 for support of checkpoint/restore.
182 config LAZY_FP_SWITCH
183 bool "Use host-based lazy floating point context switching"
184 depends on FP_SWITCH && HOST_LAZY_FPU_SWITCH
187 When true, the host's lazy floating point save/restore
188 mechanism is notified on each exit and entry. If false,
189 the floating point state is explicitly saved on each exit
190 and restored on each entry---this save/restore is entirely
194 bool "Support last-level cache partitioning"
195 depends on CACHE_INFO && EXPERIMENTAL
198 When true, <cachepart> can be used to select which page colors
199 are allowed to be used by the VM, thus limiting it to a portion
200 of the last level shared cache.
201 This is an experimental option and requires a lot of careful
202 configuration to work. In particular, memory base regions must be
203 a page size, and initial allocation of the VM may take a long
204 time depending on the host's page allocator.
206 config DEBUG_CACHEPART
207 bool "Enable debugging of cache partitioning"
211 Generate output from the debugging statements in cache partitioning
216 source "palacios/src/extensions/Kconfig"
219 bool "Enable VMM telemetry support"
222 Enable the telemetry framework in Palacios
224 This is a framwork that allows components of palacios to record
225 information that is periodically reported to the log output.
226 Telemetry is automatically collected for vmexits. Subsystem telemetry
227 is configured separately
230 config SHADOW_PAGING_TELEMETRY
231 bool "Enable Shadow Paging Telemetry"
235 Enable telemetry information for shadow paging
238 bool "Enable PMU telemetry"
240 depends on TELEMETRY && HOST_PMU
242 Enable telemetry information for a range of PMU counters
243 This causes the currently configured PMU counts to be printed
245 config PWRSTAT_TELEMETRY
246 bool "Enable power statistics telemetry"
248 depends on TELEMETRY && HOST_PWRSTAT
250 Enable telemetry information for power/energy counters
254 bool "Enable Experimental options"
257 This allows the selection of experimental features. This includes incomplete or unreviewed code.
258 Only enable this feature if you are working on the features in question.
259 IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features.
260 Any code that violates this will be immediately deleted without warning.
262 The purpose of this option is to allow features under development to be committed to the mainline
263 to more easily track changes and provide access to multiple developers
266 bool "Enable Checkpointing"
269 Enable checkpointing functionality (save/load VMs)
271 config LIVE_MIGRATION
272 bool "Enable Live Migration"
273 depends on CHECKPOINT
276 Enable live migration functionality (send/receive VMs)
278 config DEBUG_CHECKPOINT
279 bool "Enable Checkpointing and Live Migration Debugging Output"
280 depends on CHECKPOINT
283 Generate output from the debugging statements in checkpointing and live migration
288 menu "Debug Configuration"
290 ## Is unwind information useful
293 bool "Enable Debugging"
296 This turns on debugging support
304 This turns on debugging for the AMD SVM-specific code
311 This turns on debugging for the Intel VT-specific code
314 config DEBUG_SHADOW_PAGING
319 This turns on debugging for the shadow paging system
322 config DEBUG_NESTED_PAGING
327 This turns on debugging for the nested paging system
330 config DEBUG_CTRL_REGS
331 bool "Control registers"
335 This turns on debugging for the control register handlers
338 config DEBUG_INTERRUPTS
343 This turns on debugging for the interrupt system
350 This turns on debugging of system time virtualization
352 config DEBUG_SCHEDULER
357 This turns on debugging for scheduler
359 config DEBUG_CPU_MAPPER
364 This turns on debugging for CPU Mapper
371 This turns on debugging for the IO handlers
374 config DEBUG_EMULATOR
375 bool "Instruction Emulator"
379 This turns on debugging for the Instruction Emulator
383 bool "Instruction Decoder"
387 This turns on debugging for the selected instruction decoder
394 This turns on debugging for the halt instruction handler
401 This turns on debugging for the mwait and monitor instruction handlers
404 bool "Device Manager"
408 This turns on debugging for the device manager
410 config DEBUG_MEM_ERRORS
411 bool "Verbose memory errors"
415 This turns on debugging for memory translations and lookups
418 bool "Lock debugging (if host supports it)"
422 This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support.
424 config DEBUG_MEM_ALLOC
425 bool "Memory allocation debugging (if host supports it)"
429 This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
437 menu "Virtual Paging"
440 bool "Enable nested paging"
443 Enable nested paging (should always be on)
446 bool "Enable shadow paging"
449 Enables shadow paging for virtual machines
452 config SHADOW_PAGING_VTLB
455 depends on SHADOW_PAGING
457 Enables Virtual TLB implemenation for shadow paging
458 Virtual TLB now uses PAE so there are no 4 GB restrictions
461 config DEBUG_SHDW_PG_VTLB
462 bool "Enable VTLB debugging"
464 depends on SHADOW_PAGING_VTLB
466 Enables debugging messages for VTLB implementation
468 config SHADOW_PAGING_CACHE
469 bool "Shadow Page Cache"
471 depends on SHADOW_PAGING && EXPERIMENTAL
473 Enables caching implementation of shadow paging
475 config DEBUG_SHADOW_PAGING_CACHE
476 bool "Enable Shadow Page Cache Debugging"
478 depends on SHADOW_PAGING_CACHE
480 Enables debugging messages for the VTLB + Caching implementation
482 #config SHADOW_PAGING_KVM
483 # bool "KVM-style Shadow Pager"
485 # depends on SHADOW_PAGING && EXPERIMENTAL
487 # Enables shadow pager derived from KVM
488 # You probably do not want this and it will probably not compile!
490 #config DEBUG_SHADOW_PAGING_KVM
491 # bool "Enable KVM-style Shadow Pager Debugging"
493 # depends on SHADOW_PAGING_KVM
495 # Enables debugging messages for the KVM-style shadow pager
499 bool "Enable swapping"
501 depends on (SHADOW_PAGING || NESTED_PAGING) && FILE
503 Enables swapping of regions of guest physical memory to a file
505 config DEBUG_SWAPPING
506 bool "Enable swapping debugging"
510 Provides debugging output from the swapping system
513 bool "Enable memory access tracking"
515 depends on SHADOW_PAGING || NESTED_PAGING
517 Allows tracking of memory accesses on a page granularity
519 config DEBUG_MEM_TRACK
520 bool "Enable memory access tracking debugging"
524 Provides debugging output for memory access tracking
529 source "palacios/src/devices/Kconfig"
531 menu "Boot Environments"
537 prompt "Boot Code Selection"
540 Select which BIOSes to map into the default PC Class Hardware Configuration
543 bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
545 Use the SEABIOS and SEABIOS-VGA Boot code
549 bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
551 Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
555 bool "Use a user-specified BIOS"
557 Use a user-specified BIOS
563 string "Path to pre-built SEABIOS binary"
565 default "./bios/seabios/out/bios.bin"
567 Path to the SEABIOS binary to use
569 config SEABIOSVGA_PATH
570 string "Path to pre-built SEABIOS-VGA binary"
572 default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
574 This is the SEABIOS-compatible vgabios that will be used for the guest
576 config BOCHSBIOS_PATH
577 string "Path to pre-built BOCHS BIOS binary"
579 default "./bios/rombios/BIOS-bochs-latest"
581 This is the rombios that will be used for the guests
583 config BOCHSBIOSVGA_PATH
584 string "Path to pre-built BOCHS-compatible VGABIOS binary"
586 default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
588 This is the vgabios that will be used for the guests
590 config OTHERBIOS_PATH
591 string "Path to user-specified Boot Code"
594 This is a completely user-determined blob that will be mapped into the guest
595 No VGA BIOS will be mapped!
598 hex "Starting address (linear address) of BIOS"
599 range 0xe0000 0xe0000 if SEABIOS
600 range 0xf0000 0xf0000 if BOCHSBIOS
602 This is the starting address (linear address) of the BIOS code
606 config VMXASSIST_PATH
607 string "Path to pre-built VMXASSIST binary"
609 default "./bios/vmxassist/vmxassist.bin"
611 This is vmxassist image to boot real mode guests on
619 bool "Support Multiboot2-compliant boot"
622 If set, it is possible to boot a multiboot2 compliant
625 config DEBUG_MULTIBOOT
627 bool "Enable Multiboot2 debugging in Palacios"
630 Enable Multiboot2 debugging output
640 bool "Enable Symbiotic Functionality"
644 Enable Symbiotic components of the VMM.
645 This includes the SymSpy interface.
648 bool "Symbiotic upcalls"
650 depends on SYMBIOTIC && EXPERIMENTAL
652 Enables the Symbiotic upcall interface
657 depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
659 This enables the SwapBypass architecture
661 config SWAPBYPASS_TELEMETRY
662 bool "Enable SwapBypass Telemetry"
664 depends on TELEMETRY && SWAPBYPASS
666 Enable the telemetry information for the SwapBypass subsystem
669 bool "Symbiotic Modules"
671 depends on EXPERIMENTAL && SYMBIOTIC
673 Enable Symbiotic module loading
681 bool "Enable Vnet in Palacios"
684 Enable the Vnet in Palacios
688 bool "Enable Vnet Debug in Palacios"
691 Enable the Vnet debug in Palacios
696 source "palacios/src/gears/Kconfig"
702 bool "Support Hybrid Virtual Machines"
706 If set, it is possible to make VMs that are partitioned
707 (cores, memory, devices, hardware access, etc) into
708 a part ("the ROS") that supports normal VM operation and
709 a part ("the HRT") that supports Hybrid Run-Times,
710 for example Nautilus-based HRTs for parallel languages.
714 bool "Enable HVM debugging in Palacios"
717 Enable HVM debugging output