Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


fix potential overflow condition in VMX assist
[palacios.git] / Kconfig
1 mainmenu "Palacios VMM Configuration"
2
3 menu "Target Configuration"
4
5
6 choice
7         prompt "Target Host OS"
8         default KITTEN
9
10 config KITTEN
11         bool "Kitten OS"
12         select BUILT_IN_STDLIB
13         select BUILT_IN_STRCASECMP
14         select BUILT_IN_ATOI
15         select ALIGNED_PG_ALLOC
16         help
17           This enables the necesary options to compile Palacios with Kitten
18
19 config LINUX_BUILTIN
20         bool "OLD Linux (Built in) -- to be deprecated"
21         select BUILT_IN_STDLIB
22         select BUILT_IN_ATOI
23         select FILE
24         help
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
27
28
29 config LINUX
30         bool "Linux Module"
31         select BUILT_IN_STDLIB
32         select BUILT_IN_STRDUP
33         select BUILT_IN_ATOI
34         select BUILT_IN_STRTOX
35         select BUILT_IN_STRTOI
36         select BUILT_IN_ATOX
37         select FILE
38         select V3_DECODER
39         help
40           This enables the necessary options to compile Palacios as a Linux module
41  
42
43 config LINUX_KERN
44         depends on LINUX
45         string "Linux Kernel Source directory" 
46         default "/usr/src/linux"
47         help 
48           This is the directory containing the linux source for the kernel module to be built
49
50 config MINIX
51         bool "MINIX 3"
52         help
53           This enables the necesary options to compile Palacios with Kitten
54
55 config OTHER_OS
56         bool "Other OS"
57         help 
58           Choose this to compile Palacios for a Generic Host OS
59           (Formerly GeekOS)
60
61 endchoice
62
63 source "Kconfig.stdlibs"
64
65 config CRAY_XT
66         bool "Red Storm (Cray XT3/XT4)"
67         help
68           Support for Cray XT3 and XT4 systems.
69
70 config SVM
71         bool "AMD SVM Support"
72         default y
73         help
74           Compile with support for AMD SVM
75
76 config VMX
77         bool "Intel VMX Support"
78         default y
79         help 
80           Compile with support for Intel VMX
81
82
83
84 config FRAME_POINTER
85         bool "Compile with Frame pointers"
86         default n
87         help
88           Compiles the Palacios library with Frame pointers
89
90 config DEBUG_INFO
91         bool "Compile with Debug Information"
92         default n
93         help
94           Compiles the Palacios library with debugging symbols
95
96 choice 
97         prompt "X86 decoder"
98         default XED
99
100 config XED
101         bool "XED decoder library"
102         depends on !LINUX
103         help
104            This uses the XED decoder library from pintools 
105
106 config V3_DECODER
107         bool "Internal Palacios decoder"
108         help
109             This selects the internal V3Vee x86 decoder
110
111 config QUIX86
112     bool "QUIX86 decoder"
113     help
114         This selects the QUIX86 decoder library
115
116 config QUIX86_DEBUG
117     bool "QUIX86 decoder debug version"
118     help
119         This selects the QUIX86 decoder library compiled w/o optimization
120         and with debug info
121
122 endchoice
123
124 menu "Supported host OS features"
125
126 config MEM_BLOCK_SIZE
127         int "Allocation size for underlying VM memory"
128         default 134217728
129         help 
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.
134
135 config ALIGNED_PG_ALLOC
136         bool "Host support for aligned page allocations"
137         default n
138         help 
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. 
141
142 config MAX_CPUS
143         int "Maximum number of cpus"
144         range 1 255
145         default "16"
146         help 
147           Specifies the maximum number of hardware CPUs supported by the OS
148           For uniprocessor environments, set this to 1
149
150 endmenu
151
152 source "palacios/src/interfaces/Kconfig"
153
154 menu "Virtual core specialization"
155
156 config CUSTOM_CPUID
157         bool "Use custom CPU information (vendor, etc)"
158         default n
159         help 
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.
164
165 config STRICT_MSR_SEMANTICS
166         bool "Use strict RDMSR/WRMSR semantics"
167         default n
168         help
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.
171
172 config FP_SWITCH
173         bool "Floating point context switching"
174         default n
175         help
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.
181
182 config LAZY_FP_SWITCH
183         bool "Use host-based lazy floating point context switching"
184         depends on FP_SWITCH && HOST_LAZY_FPU_SWITCH
185         default y
186         help
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
191           done in Palacios.
192
193 config CACHEPART
194         bool "Support last-level cache partitioning"
195         depends on CACHE_INFO && EXPERIMENTAL
196         default y
197         help 
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. 
205
206 config DEBUG_CACHEPART
207         bool "Enable debugging of cache partitioning"
208         depends on CACHEPART
209         default n
210         help
211           Generate output from the debugging statements in cache partitioning
212           
213
214 endmenu
215
216 source "palacios/src/extensions/Kconfig"
217
218 config TELEMETRY
219         bool "Enable VMM telemetry support"
220         default n
221         help 
222           Enable the telemetry framework in Palacios
223           -----
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
228
229
230 config SHADOW_PAGING_TELEMETRY
231         bool "Enable Shadow Paging Telemetry"
232         default y
233         depends on TELEMETRY
234         help
235           Enable telemetry information for shadow paging 
236
237 config PMU_TELEMETRY
238       bool "Enable PMU telemetry"
239       default n
240       depends on TELEMETRY && HOST_PMU
241       help
242         Enable telemetry information for a range of PMU counters
243           This causes the currently configured PMU counts to be printed
244
245 config PWRSTAT_TELEMETRY
246         bool "Enable power statistics telemetry"
247         default n
248         depends on TELEMETRY && HOST_PWRSTAT
249         help
250                 Enable telemetry information for power/energy counters 
251                 
252
253 config EXPERIMENTAL
254         bool "Enable Experimental options"
255         default n
256         help 
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. 
261           -- 
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
264
265 config CHECKPOINT
266         bool "Enable Checkpointing"
267         default n
268         help 
269           Enable checkpointing functionality (save/load VMs)
270
271 config LIVE_MIGRATION
272         bool "Enable Live Migration"
273         depends on CHECKPOINT
274         default n
275         help
276           Enable live migration functionality (send/receive VMs)
277
278 config DEBUG_CHECKPOINT
279         bool "Enable Checkpointing and Live Migration Debugging Output"
280         depends on CHECKPOINT
281         default n
282         help
283           Generate output from the debugging statements in checkpointing and live migration
284
285
286 endmenu
287
288 menu "Debug Configuration"
289
290 ## Is unwind information useful
291
292 config DEBUG_ON
293         bool "Enable Debugging"
294         default y
295         help
296           This turns on debugging support
297
298
299 config DEBUG_SVM
300         bool "AMD SVM"
301         default n
302         depends on DEBUG_ON
303         help 
304           This turns on debugging for the AMD SVM-specific code
305
306 config DEBUG_VMX
307         bool "Intel VT"
308         default n
309         depends on DEBUG_ON
310         help 
311           This turns on debugging for the Intel VT-specific code
312
313
314 config DEBUG_SHADOW_PAGING
315         bool "Shadow paging"
316         default n
317         depends on DEBUG_ON
318         help 
319           This turns on debugging for the shadow paging system
320
321
322 config DEBUG_NESTED_PAGING
323         bool "Nested paging"
324         default n
325         depends on DEBUG_ON
326         help 
327           This turns on debugging for the nested paging system
328
329
330 config DEBUG_CTRL_REGS
331         bool "Control registers"
332         default n
333         depends on DEBUG_ON
334         help 
335           This turns on debugging for the control register handlers
336
337
338 config DEBUG_INTERRUPTS
339         bool "Interrupts"
340         default n
341         depends on DEBUG_ON
342         help 
343           This turns on debugging for the interrupt system
344
345 config DEBUG_TIME
346         bool "Timing"
347         default n
348         depends on DEBUG_ON
349         help
350           This turns on debugging of system time virtualization
351
352 config DEBUG_SCHEDULER
353     bool "Scheduler"
354     default n
355     depends on DEBUG_ON
356     help
357       This turns on debugging for scheduler
358
359 config DEBUG_CPU_MAPPER
360     bool "CPU Mapper"
361     default n
362     depends on DEBUG_ON
363     help
364       This turns on debugging for CPU Mapper
365
366 config DEBUG_IO
367         bool "IO"
368         default n
369         depends on DEBUG_ON
370         help 
371           This turns on debugging for the IO handlers
372
373
374 config DEBUG_EMULATOR
375         bool "Instruction Emulator"
376         default n
377         depends on DEBUG_ON
378         help 
379           This turns on debugging for the Instruction Emulator
380
381
382 config DEBUG_DECODER
383         bool "Instruction Decoder"
384         default n
385         depends on DEBUG_ON
386         help 
387           This turns on debugging for the selected instruction decoder
388
389 config DEBUG_HALT
390         bool "Halt"
391         default n
392         depends on DEBUG_ON
393         help 
394           This turns on debugging for the halt instruction handler
395
396 config DEBUG_MWAIT
397         bool "MWAIT/MONITOR"
398         default n
399         depends on DEBUG_ON
400         help 
401           This turns on debugging for the mwait and monitor instruction handlers
402
403 config DEBUG_DEV_MGR
404         bool "Device Manager"
405         default n
406         depends on DEBUG_ON
407         help 
408           This turns on debugging for the device manager
409
410 config DEBUG_MEM_ERRORS
411     bool "Verbose memory errors"
412     default n
413     depends on DEBUG_ON
414     help
415       This turns on debugging for memory translations and lookups
416
417 config DEBUG_LOCKS
418     bool "Lock debugging (if host supports it)"
419     default n
420     depends on DEBUG_ON
421     help
422       This turns on lock debugging for locks in Palacios and in its host-specifc glue code.  This requires host support.
423
424 config DEBUG_MEM_ALLOC
425     bool "Memory allocation debugging (if host supports it)"
426     default n
427     depends on DEBUG_ON
428     help
429       This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
430
431
432 endmenu
433
434
435
436
437 menu "Virtual Paging"
438
439 config NESTED_PAGING
440         bool "Enable nested paging"
441         default y 
442         help
443            Enable nested paging (should always be on)
444
445 config SHADOW_PAGING
446         bool "Enable shadow paging"
447         default y
448         help 
449            Enables shadow paging for virtual machines
450
451
452 config SHADOW_PAGING_VTLB
453         bool "Virtual TLB"
454         default y
455         depends on SHADOW_PAGING
456         help 
457            Enables Virtual TLB implemenation for shadow paging
458            Virtual TLB now uses PAE so there are no 4 GB restrictions
459
460
461 config DEBUG_SHDW_PG_VTLB
462         bool "Enable VTLB debugging"
463         default n
464         depends on SHADOW_PAGING_VTLB
465         help
466           Enables debugging messages for VTLB implementation
467
468 config SHADOW_PAGING_CACHE
469         bool "Shadow Page Cache"
470         default n
471         depends on SHADOW_PAGING && EXPERIMENTAL
472         help 
473            Enables caching implementation of shadow paging
474
475 config DEBUG_SHADOW_PAGING_CACHE
476         bool "Enable Shadow Page Cache Debugging"
477         default n
478         depends on SHADOW_PAGING_CACHE
479         help
480            Enables debugging messages for the VTLB + Caching implementation
481
482 #config SHADOW_PAGING_KVM
483 #       bool "KVM-style Shadow Pager"
484 #       default n
485 #       depends on SHADOW_PAGING && EXPERIMENTAL
486 #       help 
487 #          Enables shadow pager derived from KVM 
488 #           You probably do not want this and it will probably not compile!
489 #
490 #config DEBUG_SHADOW_PAGING_KVM 
491 #       bool "Enable KVM-style Shadow Pager Debugging"
492 #        default n
493 #        depends on SHADOW_PAGING_KVM
494 #        help
495 #           Enables debugging messages for the KVM-style shadow pager
496
497
498 config SWAPPING
499         bool "Enable swapping"
500         default n
501         depends on (SHADOW_PAGING || NESTED_PAGING) && FILE
502         help
503            Enables swapping of regions of guest physical memory to a file 
504
505 config DEBUG_SWAPPING
506         bool "Enable swapping debugging"
507         default n
508         depends on SWAPPING
509         help
510            Provides debugging output from the swapping system
511
512 config MEM_TRACK
513          bool "Enable memory access tracking"
514         default n
515         depends on SHADOW_PAGING || NESTED_PAGING
516         help
517            Allows tracking of memory accesses on a page granularity
518
519 config DEBUG_MEM_TRACK
520          bool "Enable memory access tracking debugging" 
521         default n
522         depends on MEM_TRACK
523         help
524            Provides debugging output for memory access tracking
525
526 endmenu
527
528
529 source "palacios/src/devices/Kconfig"
530
531 menu "Boot Environments"
532
533
534 menu "BIOS"
535
536 choice 
537        prompt "Boot Code Selection"
538        default SEABIOS
539         help
540            Select which BIOSes to map into the default PC Class Hardware Configuration
541
542 config SEABIOS
543         bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
544         help
545             Use the SEABIOS and SEABIOS-VGA Boot code
546
547
548 config BOCHSBIOS
549         bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
550         help
551             Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
552
553
554 config OTHERBIOS
555         bool "Use a user-specified BIOS"
556         help
557             Use a user-specified BIOS
558
559
560 endchoice
561
562 config SEABIOS_PATH
563         string "Path to pre-built SEABIOS binary"
564         depends on SEABIOS
565         default "./bios/seabios/out/bios.bin"
566         help
567           Path to the SEABIOS binary to use
568
569 config SEABIOSVGA_PATH
570         string "Path to pre-built SEABIOS-VGA binary"
571         depends on SEABIOS
572         default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
573         help 
574           This is the SEABIOS-compatible vgabios that will be used for the guest
575
576 config BOCHSBIOS_PATH
577         string "Path to pre-built BOCHS BIOS binary"
578         depends on BOCHSBIOS
579         default "./bios/rombios/BIOS-bochs-latest"
580         help
581           This is the rombios that will be used for the guests
582
583 config BOCHSBIOSVGA_PATH
584         string "Path to pre-built BOCHS-compatible VGABIOS binary"
585         depends on BOCHSBIOS
586         default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
587         help
588           This is the vgabios that will be used for the guests
589
590 config OTHERBIOS_PATH
591         string "Path to user-specified Boot Code"
592         depends on OTHERBIOS
593         help
594           This is a completely user-determined blob that will be mapped into the guest
595           No VGA BIOS will be mapped!
596
597 config BIOS_START
598         hex "Starting address (linear address) of BIOS"
599         range 0xe0000 0xe0000 if SEABIOS
600         range 0xf0000 0xf0000 if BOCHSBIOS
601         help
602           This is the starting address (linear address) of the BIOS code
603
604
605
606 config VMXASSIST_PATH
607         string "Path to pre-built VMXASSIST binary"
608         depends on VMX
609         default "./bios/vmxassist/vmxassist.bin"
610         help
611           This is vmxassist image to boot real mode guests on 
612           Intel VMX Platforms
613
614 endmenu 
615
616 menu Multiboot
617
618 config MULTIBOOT
619         bool "Support Multiboot2-compliant boot"
620         default y
621         help 
622           If set, it is possible to boot a multiboot2 compliant
623           kernel directly.
624
625 config DEBUG_MULTIBOOT
626         depends on MULTIBOOT
627         bool "Enable Multiboot2 debugging in Palacios"
628         default n
629         help
630           Enable Multiboot2 debugging output
631
632 endmenu
633
634
635 endmenu
636
637 menu "Symbiosis"
638
639 config SYMBIOTIC
640         bool "Enable Symbiotic Functionality"
641         default n
642         depends on BOCHSBIOS
643         help 
644           Enable Symbiotic components of the VMM. 
645           This includes the SymSpy interface.
646
647 config SYMCALL
648         bool "Symbiotic upcalls"
649         default n
650         depends on SYMBIOTIC && EXPERIMENTAL
651         help
652           Enables the Symbiotic upcall interface
653
654 config SWAPBYPASS
655         bool "SwapBypass"
656         default n
657         depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
658         help 
659           This enables the SwapBypass architecture
660
661 config SWAPBYPASS_TELEMETRY
662         bool "Enable SwapBypass Telemetry"
663         default n
664         depends on TELEMETRY && SWAPBYPASS
665         help 
666           Enable the telemetry information for the SwapBypass subsystem
667
668 menuconfig SYMMOD 
669         bool "Symbiotic Modules"
670         default n
671         depends on EXPERIMENTAL && SYMBIOTIC
672         help
673           Enable Symbiotic module loading
674
675
676 endmenu
677
678 menu "VNET"
679
680 config VNET
681         bool "Enable Vnet in Palacios"
682         default n
683         help
684           Enable the Vnet in Palacios
685
686 config DEBUG_VNET
687         depends on VNET
688         bool "Enable Vnet Debug in Palacios"
689         default n
690         help
691           Enable the Vnet debug in Palacios
692
693
694 endmenu
695
696 source "palacios/src/gears/Kconfig"
697
698
699 menu HVM
700
701 config HVM
702         bool "Support Hybrid Virtual Machines"
703         depends on MULTIBOOT
704         default n
705         help 
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.
711
712 config DEBUG_HVM
713         depends on HVM
714         bool "Enable HVM debugging in Palacios"
715         default n
716         help
717           Enable HVM debugging output
718
719 endmenu
720
721
722
723
724
725
726