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.


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