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.


853c1e75c4c3f3237d7c5c8c202d889c6cffcee2
[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 menu "Debug configuration"
420
421 ## Is unwind information useful
422
423 config DEBUG_ON
424         bool "Enable Debugging"
425         default y
426         help
427           This turns on debugging support
428
429
430 config DEBUG_SVM
431         bool "AMD SVM"
432         default n
433         depends on DEBUG_ON
434         help 
435           This turns on debugging for the AMD SVM-specific code
436
437 config DEBUG_VMX
438         bool "Intel VT"
439         default n
440         depends on DEBUG_ON
441         help 
442           This turns on debugging for the Intel VT-specific code
443
444
445 config DEBUG_SHADOW_PAGING
446         bool "Shadow paging"
447         default n
448         depends on DEBUG_ON
449         help 
450           This turns on debugging for the shadow paging system
451
452
453 config DEBUG_NESTED_PAGING
454         bool "Nested paging"
455         default n
456         depends on DEBUG_ON
457         help 
458           This turns on debugging for the nested paging system
459
460
461 config DEBUG_CTRL_REGS
462         bool "Control registers"
463         default n
464         depends on DEBUG_ON
465         help 
466           This turns on debugging for the control register handlers
467
468
469 config DEBUG_INTERRUPTS
470         bool "Interrupts"
471         default n
472         depends on DEBUG_ON
473         help 
474           This turns on debugging for the interrupt system
475
476 config DEBUG_TIME
477         bool "Timing"
478         default n
479         depends on DEBUG_ON
480         help
481           This turns on debugging of system time virtualization
482
483 config DEBUG_SCHEDULER
484     bool "Scheduler"
485     default n
486     depends on DEBUG_ON
487     help
488       This turns on debugging for scheduler
489
490 config DEBUG_CPU_MAPPER
491     bool "CPU Mapper"
492     default n
493     depends on DEBUG_ON
494     help
495       This turns on debugging for CPU Mapper
496
497 config DEBUG_IO
498         bool "IO"
499         default n
500         depends on DEBUG_ON
501         help 
502           This turns on debugging for the IO handlers
503
504
505 config DEBUG_EMULATOR
506         bool "Instruction Emulator"
507         default n
508         depends on DEBUG_ON
509         help 
510           This turns on debugging for the Instruction Emulator
511
512
513 config DEBUG_DECODER
514         bool "Instruction Decoder"
515         default n
516         depends on DEBUG_ON
517         help 
518           This turns on debugging for the selected instruction decoder
519
520 config DEBUG_HALT
521         bool "Halt"
522         default n
523         depends on DEBUG_ON
524         help 
525           This turns on debugging for the halt instruction handler
526
527 config DEBUG_MWAIT
528         bool "MWAIT/MONITOR"
529         default n
530         depends on DEBUG_ON
531         help 
532           This turns on debugging for the mwait and monitor instruction handlers
533
534 config DEBUG_DEV_MGR
535         bool "Device Manager"
536         default n
537         depends on DEBUG_ON
538         help 
539           This turns on debugging for the device manager
540
541 config DEBUG_MEM_ERRORS
542     bool "Verbose memory errors"
543     default n
544     depends on DEBUG_ON
545     help
546       This turns on debugging for memory translations and lookups
547
548 config DEBUG_LOCKS
549     bool "Lock debugging (if host supports it)"
550     default n
551     depends on DEBUG_ON
552     help
553       This turns on lock debugging for locks in Palacios and in its host-specifc glue code.  This requires host support.
554
555 config DEBUG_MEM_ALLOC
556     bool "Memory allocation debugging (if host supports it)"
557     default n
558     depends on DEBUG_ON
559     help
560       This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
561
562
563 endmenu
564
565
566 menu "BIOS Selection"
567
568 choice 
569        prompt "Boot Code Selection"
570        default SEABIOS
571         help
572            Select which BIOSes to map into the default PC Class Hardware Configuration
573
574 config SEABIOS
575         bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
576         help
577             Use the SEABIOS and SEABIOS-VGA Boot code
578
579
580 config BOCHSBIOS
581         bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
582         help
583             Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
584
585
586 config OTHERBIOS
587         bool "Use a user-specified BIOS"
588         help
589             Use a user-specified BIOS
590
591
592 endchoice
593
594
595 config SEABIOS_PATH
596         string "Path to pre-built SEABIOS binary"
597         depends on SEABIOS
598         default "./bios/seabios/out/bios.bin"
599         help
600           Path to the SEABIOS binary to use
601
602 config SEABIOSVGA_PATH
603         string "Path to pre-built SEABIOS-VGA binary"
604         depends on SEABIOS
605         default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
606         help 
607           This is the SEABIOS-compatible vgabios that will be used for the guest
608
609 config BOCHSBIOS_PATH
610         string "Path to pre-built BOCHS BIOS binary"
611         depends on BOCHSBIOS
612         default "./bios/rombios/BIOS-bochs-latest"
613         help
614           This is the rombios that will be used for the guests
615
616 config BOCHSBIOSVGA_PATH
617         string "Path to pre-built BOCHS-compatible VGABIOS binary"
618         depends on BOCHSBIOS
619         default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
620         help
621           This is the vgabios that will be used for the guests
622
623 config OTHERBIOS_PATH
624         string "Path to user-specified Boot Code"
625         depends on OTHERBIOS
626         help
627           This is a completely user-determined blob that will be mapped into the guest
628           No VGA BIOS will be mapped!
629
630 config BIOS_START
631         hex "Starting address (linear address) of BIOS"
632         range 0xe0000 0xe0000 if SEABIOS
633         range 0xf0000 0xf0000 if BOCHSBIOS
634         help
635           This is the starting address (linear address) of the BIOS code
636
637
638
639 config VMXASSIST_PATH
640         string "Path to pre-built VMXASSIST binary"
641         depends on VMX
642         default "./bios/vmxassist/vmxassist.bin"
643         help
644           This is vmxassist image to boot real mode guests on 
645           Intel VMX Platforms
646
647 endmenu
648
649
650 source "palacios/src/devices/Kconfig"
651