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.


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