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.


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