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.


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