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"
423 bool "Support Hybrid Virtual Machines"
426 If set, it is possible to make VMs that are partitioned
427 (cores, memory, devices, hardware access, etc) into
428 a part ("the ROS") that supports normal VM operation and
429 a part ("the HRT") that supports Hybrid Run-Times,
430 for example Nautilus-based HRTs for parallel languages.
434 bool "Enable HVM debugging in Palacios"
437 Enable HVM debugging output
441 menu "Debug configuration"
443 ## Is unwind information useful
446 bool "Enable Debugging"
449 This turns on debugging support
457 This turns on debugging for the AMD SVM-specific code
464 This turns on debugging for the Intel VT-specific code
467 config DEBUG_SHADOW_PAGING
472 This turns on debugging for the shadow paging system
475 config DEBUG_NESTED_PAGING
480 This turns on debugging for the nested paging system
483 config DEBUG_CTRL_REGS
484 bool "Control registers"
488 This turns on debugging for the control register handlers
491 config DEBUG_INTERRUPTS
496 This turns on debugging for the interrupt system
503 This turns on debugging of system time virtualization
505 config DEBUG_SCHEDULER
510 This turns on debugging for scheduler
512 config DEBUG_CPU_MAPPER
517 This turns on debugging for CPU Mapper
524 This turns on debugging for the IO handlers
527 config DEBUG_EMULATOR
528 bool "Instruction Emulator"
532 This turns on debugging for the Instruction Emulator
536 bool "Instruction Decoder"
540 This turns on debugging for the selected instruction decoder
547 This turns on debugging for the halt instruction handler
554 This turns on debugging for the mwait and monitor instruction handlers
557 bool "Device Manager"
561 This turns on debugging for the device manager
563 config DEBUG_MEM_ERRORS
564 bool "Verbose memory errors"
568 This turns on debugging for memory translations and lookups
571 bool "Lock debugging (if host supports it)"
575 This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support.
577 config DEBUG_MEM_ALLOC
578 bool "Memory allocation debugging (if host supports it)"
582 This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
588 menu "BIOS Selection"
591 prompt "Boot Code Selection"
594 Select which BIOSes to map into the default PC Class Hardware Configuration
597 bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
599 Use the SEABIOS and SEABIOS-VGA Boot code
603 bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
605 Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
609 bool "Use a user-specified BIOS"
611 Use a user-specified BIOS
618 string "Path to pre-built SEABIOS binary"
620 default "./bios/seabios/out/bios.bin"
622 Path to the SEABIOS binary to use
624 config SEABIOSVGA_PATH
625 string "Path to pre-built SEABIOS-VGA binary"
627 default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
629 This is the SEABIOS-compatible vgabios that will be used for the guest
631 config BOCHSBIOS_PATH
632 string "Path to pre-built BOCHS BIOS binary"
634 default "./bios/rombios/BIOS-bochs-latest"
636 This is the rombios that will be used for the guests
638 config BOCHSBIOSVGA_PATH
639 string "Path to pre-built BOCHS-compatible VGABIOS binary"
641 default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
643 This is the vgabios that will be used for the guests
645 config OTHERBIOS_PATH
646 string "Path to user-specified Boot Code"
649 This is a completely user-determined blob that will be mapped into the guest
650 No VGA BIOS will be mapped!
653 hex "Starting address (linear address) of BIOS"
654 range 0xe0000 0xe0000 if SEABIOS
655 range 0xf0000 0xf0000 if BOCHSBIOS
657 This is the starting address (linear address) of the BIOS code
661 config VMXASSIST_PATH
662 string "Path to pre-built VMXASSIST binary"
664 default "./bios/vmxassist/vmxassist.bin"
666 This is vmxassist image to boot real mode guests on
672 source "palacios/src/devices/Kconfig"