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 fixes
[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 endmenu
328
329 menu "Symbiotic Functions"
330
331 config SYMBIOTIC
332         bool "Enable Symbiotic Functionality"
333         default n
334         help 
335           Enable Symbiotic components of the VMM. 
336           This includes the SymSpy interface.
337
338 config SYMCALL
339         bool "Symbiotic upcalls"
340         default n
341         depends on SYMBIOTIC && EXPERIMENTAL
342         help
343           Enables the Symbiotic upcall interface
344
345 config SWAPBYPASS
346         bool "SwapBypass"
347         default n
348         depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
349         help 
350           This enables the SwapBypass architecture
351
352 config SWAPBYPASS_TELEMETRY
353         bool "Enable SwapBypass Telemetry"
354         default n
355         depends on TELEMETRY && SWAPBYPASS
356         help 
357           Enable the telemetry information for the SwapBypass subsystem
358
359 menuconfig SYMMOD 
360         bool "Symbiotic Modules"
361         default n
362         depends on EXPERIMENTAL
363 #       depends on SYMBIOTIC
364         help
365           Enable Symbiotic module loading
366
367
368 endmenu
369
370 menu "VNET"
371
372 config VNET
373         bool "Enable Vnet in Palacios"
374         default n
375         help
376           Enable the Vnet in Palacios
377
378 config DEBUG_VNET
379         depends on VNET
380         bool "Enable Vnet Debug in Palacios"
381         default n
382         help
383           Enable the Vnet debug in Palacios
384
385
386 endmenu
387
388 source "palacios/src/gears/Kconfig"
389
390 menu "Debug configuration"
391
392 ## Is unwind information useful
393
394 config DEBUG_ON
395         bool "Enable Debugging"
396         default y
397         help
398           This turns on debugging support
399
400
401 config DEBUG_SVM
402         bool "AMD SVM"
403         default n
404         depends on DEBUG_ON
405         help 
406           This turns on debugging for the AMD SVM-specific code
407
408 config DEBUG_VMX
409         bool "Intel VT"
410         default n
411         depends on DEBUG_ON
412         help 
413           This turns on debugging for the Intel VT-specific code
414
415
416 config DEBUG_SHADOW_PAGING
417         bool "Shadow paging"
418         default n
419         depends on DEBUG_ON
420         help 
421           This turns on debugging for the shadow paging system
422
423
424 config DEBUG_NESTED_PAGING
425         bool "Nested paging"
426         default n
427         depends on DEBUG_ON
428         help 
429           This turns on debugging for the nested paging system
430
431
432 config DEBUG_CTRL_REGS
433         bool "Control registers"
434         default n
435         depends on DEBUG_ON
436         help 
437           This turns on debugging for the control register handlers
438
439
440 config DEBUG_INTERRUPTS
441         bool "Interrupts"
442         default n
443         depends on DEBUG_ON
444         help 
445           This turns on debugging for the interrupt system
446
447 config DEBUG_TIME
448         bool "Timing"
449         default n
450         depends on DEBUG_ON
451         help
452           This turns on debugging of system time virtualization
453
454 config DEBUG_SCHEDULER
455     bool "Scheduler"
456     default n
457     depends on DEBUG_ON
458     help
459       This turns on debugging for scheduler
460
461 config DEBUG_CPU_MAPPER
462     bool "CPU Mapper"
463     default n
464     depends on DEBUG_ON
465     help
466       This turns on debugging for CPU Mapper
467
468 config DEBUG_IO
469         bool "IO"
470         default n
471         depends on DEBUG_ON
472         help 
473           This turns on debugging for the IO handlers
474
475
476 config DEBUG_EMULATOR
477         bool "Instruction Emulator"
478         default n
479         depends on DEBUG_ON
480         help 
481           This turns on debugging for the Instruction Emulator
482
483
484 config DEBUG_DECODER
485         bool "Instruction Decoder"
486         default n
487         depends on DEBUG_ON
488         help 
489           This turns on debugging for the selected instruction decoder
490
491 config DEBUG_HALT
492         bool "Halt"
493         default n
494         depends on DEBUG_ON
495         help 
496           This turns on debugging for the halt instruction handler
497
498 config DEBUG_MWAIT
499         bool "MWAIT/MONITOR"
500         default n
501         depends on DEBUG_ON
502         help 
503           This turns on debugging for the mwait and monitor instruction handlers
504
505 config DEBUG_DEV_MGR
506         bool "Device Manager"
507         default n
508         depends on DEBUG_ON
509         help 
510           This turns on debugging for the device manager
511
512 config DEBUG_MEM_ERRORS
513     bool "Verbose memory errors"
514     default n
515     depends on DEBUG_ON
516     help
517       This turns on debugging for memory translations and lookups
518
519 config DEBUG_LOCKS
520     bool "Lock debugging (if host supports it)"
521     default n
522     depends on DEBUG_ON
523     help
524       This turns on lock debugging for locks in Palacios and in its host-specifc glue code.  This requires host support.
525
526 config DEBUG_MEM_ALLOC
527     bool "Memory allocation debugging (if host supports it)"
528     default n
529     depends on DEBUG_ON
530     help
531       This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
532
533
534 endmenu
535
536
537 menu "BIOS Selection"
538
539 choice 
540        prompt "Boot Code Selection"
541        default SEABIOS
542         help
543            Select which BIOSes to map into the default PC Class Hardware Configuration
544
545 config SEABIOS
546         bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
547         help
548             Use the SEABIOS and SEABIOS-VGA Boot code
549
550
551 config BOCHSBIOS
552         bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
553         help
554             Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
555
556
557 config OTHERBIOS
558         bool "Use a user-specified BIOS"
559         help
560             Use a user-specified BIOS
561
562
563 endchoice
564
565
566 config SEABIOS_PATH
567         string "Path to pre-built SEABIOS binary"
568         depends on SEABIOS
569         default "./bios/seabios/out/bios.bin"
570         help
571           Path to the SEABIOS binary to use
572
573 config SEABIOSVGA_PATH
574         string "Path to pre-built SEABIOS-VGA binary"
575         depends on SEABIOS
576         default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
577         help 
578           This is the SEABIOS-compatible vgabios that will be used for the guest
579
580 config BOCHSBIOS_PATH
581         string "Path to pre-built BOCHS BIOS binary"
582         depends on BOCHSBIOS
583         default "./bios/rombios/BIOS-bochs-latest"
584         help
585           This is the rombios that will be used for the guests
586
587 config BOCHSBIOSVGA_PATH
588         string "Path to pre-built BOCHS-compatible VGABIOS binary"
589         depends on BOCHSBIOS
590         default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
591         help
592           This is the vgabios that will be used for the guests
593
594 config OTHERBIOS_PATH
595         string "Path to user-specified Boot Code"
596         depends on OTHERBIOS
597         help
598           This is a completely user-determined blob that will be mapped into the guest
599           No VGA BIOS will be mapped!
600
601 config BIOS_START
602         hex "Starting address (linear address) of BIOS"
603         range 0xe0000 0xe0000 if SEABIOS
604         range 0xf0000 0xf0000 if BOCHSBIOS
605         help
606           This is the starting address (linear address) of the BIOS code
607
608
609
610 config VMXASSIST_PATH
611         string "Path to pre-built VMXASSIST binary"
612         depends on VMX
613         default "./bios/vmxassist/vmxassist.bin"
614         help
615           This is vmxassist image to boot real mode guests on 
616           Intel VMX Platforms
617
618 endmenu
619
620
621 source "palacios/src/devices/Kconfig"
622