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.


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