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.


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