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.


Allow selection of different BIOSes for the PC hardware class
[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 config FRAME_POINTER
79         bool "Compile with Frame pointers"
80         default n
81         help
82           Compiles the Palacios library with Frame pointers
83
84 config DEBUG_INFO
85         bool "Compile with Debug Information"
86         default n
87         help
88           Compiles the Palacios library with debugging symbols
89
90 choice 
91         prompt "X86 decoder"
92         default XED
93
94 config XED
95         bool "XED decoder library"
96         depends on !LINUX
97         help
98            This uses the XED decoder library from pintools 
99
100 config V3_DECODER
101         bool "Internal Palacios decoder"
102         help
103             This selects the internal V3Vee x86 decoder
104
105 config QUIX86
106     bool "QUIX86 decoder"
107     help
108         This selects the QUIX86 decoder library
109
110 config QUIX86_DEBUG
111     bool "QUIX86 decoder debug version"
112     help
113         This selects the QUIX86 decoder library compiled w/o optimization
114         and with debug info
115
116 endchoice
117
118 menu "Supported host OS features"
119       
120
121 config ALIGNED_PG_ALLOC
122         bool "Host support for aligned page allocations"
123         default n
124         help 
125           Select this if your OS supports allocating memory pages using an alignment. This is required 
126           if you want Palacios to run with large page table pages. 
127
128 config MAX_CPUS
129         int "Maximum number of cpus"
130         range 1 255
131         default "16"
132         help 
133           Specifies the maximum number of hardware CPUs supported by the OS
134           For uniprocessor environments, set this to 1
135
136 endmenu
137
138 source "palacios/src/interfaces/Kconfig"
139 source "palacios/src/extensions/Kconfig"
140
141 config TELEMETRY
142         bool "Enable VMM telemetry support"
143         default n
144         help 
145           Enable the telemetry framework in Palacios
146           -----
147           This is a framwork that allows components of palacios to record 
148           information that is periodically reported to the log output.
149           Telemetry is automatically collected for vmexits. Subsystem telemetry 
150           is configured separately
151
152
153 config SHADOW_PAGING_TELEMETRY
154         bool "Enable Shadow Paging Telemetry"
155         default y
156         depends on TELEMETRY
157         help
158           Enable telemetry information for shadow paging 
159
160 config PMU_TELEMETRY
161       bool "Enable PMU telemetry"
162       default n
163       depends on TELEMETRY && HOST_PMU
164       help
165         Enable telemetry information for a range of PMU counters
166           This causes the currently configured PMU counts to be printed
167
168 config PWRSTAT_TELEMETRY
169         bool "Enable power statistics telemetry"
170         default n
171         depends on TELEMETRY && HOST_PWRSTAT
172         help
173                 Enable telemetry information for power/energy counters 
174                 
175
176 config EXPERIMENTAL
177         bool "Enable Experimental options"
178         default n
179         help 
180           This allows the selection of experimental features. This includes incomplete or unreviewed code. 
181           Only enable this feature if you are working on the features in question. 
182           IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features. 
183           Any code that violates this will be immediately deleted without warning. 
184           -- 
185           The purpose of this option is to allow features under development to be committed to the mainline
186           to more easily track changes and provide access to multiple developers
187
188 config CHECKPOINT
189         bool "Enable Checkpointing"
190         default n
191         help 
192           Enable checkpointing functionality (save/load VMs)
193
194 config LIVE_MIGRATION
195         bool "Enable Live Migration"
196         depends on CHECKPOINT
197         default n
198         help
199           Enable live migration functionality (send/receive VMs)
200
201 config DEBUG_CHECKPOINT
202         bool "Enable Checkpointing and Live Migration Debugging Output"
203         depends on CHECKPOINT
204         default n
205         help
206           Generate output from the debugging statements in checkpointing and live migration
207
208
209 endmenu
210
211
212 source "Kconfig.stdlibs"
213
214
215 menu "Virtual Paging"
216
217 config SHADOW_PAGING
218         bool "Enable shadow paging"
219         default y
220         help 
221            Enables shadow paging for virtual machines
222
223
224 config SHADOW_PAGING_VTLB
225         bool "Virtual TLB"
226         default y
227         depends on SHADOW_PAGING
228         help 
229            Enables Virtual TLB implemenation for shadow paging
230
231
232 config DEBUG_SHDW_PG_VTLB
233         bool "Enable VTLB debugging"
234         default n
235         depends on SHADOW_PAGING_VTLB
236         help
237           Enables debugging messages for VTLB implementation
238
239 config SHADOW_PAGING_CACHE1
240         bool "Shadow Page Cache (1)"
241         default y
242         depends on SHADOW_PAGING
243         help 
244            Enables caching implemenation for shadow paging
245
246
247 endmenu
248
249 menu "Symbiotic Functions"
250
251 config SYMBIOTIC
252         bool "Enable Symbiotic Functionality"
253         default n
254         help 
255           Enable Symbiotic components of the VMM. 
256           This includes the SymSpy interface.
257
258 config SYMCALL
259         bool "Symbiotic upcalls"
260         default n
261         depends on SYMBIOTIC && EXPERIMENTAL
262         help
263           Enables the Symbiotic upcall interface
264
265 config SWAPBYPASS
266         bool "SwapBypass"
267         default n
268         depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
269         help 
270           This enables the SwapBypass architecture
271
272 config SWAPBYPASS_TELEMETRY
273         bool "Enable SwapBypass Telemetry"
274         default n
275         depends on TELEMETRY && SWAPBYPASS
276         help 
277           Enable the telemetry information for the SwapBypass subsystem
278
279 menuconfig SYMMOD 
280         bool "Symbiotic Modules"
281         default n
282         depends on EXPERIMENTAL
283 #       depends on SYMBIOTIC
284         help
285           Enable Symbiotic module loading
286
287
288 endmenu
289
290 menu "VNET"
291
292 config VNET
293         bool "Enable Vnet in Palacios"
294         default n
295         help
296           Enable the Vnet in Palacios
297
298 config DEBUG_VNET
299         depends on VNET
300         bool "Enable Vnet Debug in Palacios"
301         default n
302         help
303           Enable the Vnet debug in Palacios
304
305
306 endmenu
307
308 source "palacios/src/gears/Kconfig"
309
310 menu "Debug configuration"
311
312 ## Is unwind information useful
313
314 config DEBUG_ON
315         bool "Enable Debugging"
316         default y
317         help
318           This turns on debugging support
319
320
321 config DEBUG_SVM
322         bool "AMD SVM"
323         default n
324         depends on DEBUG_ON
325         help 
326           This turns on debugging for the AMD SVM-specific code
327
328 config DEBUG_VMX
329         bool "Intel VT"
330         default n
331         depends on DEBUG_ON
332         help 
333           This turns on debugging for the Intel VT-specific code
334
335
336 config DEBUG_SHADOW_PAGING
337         bool "Shadow paging"
338         default n
339         depends on DEBUG_ON
340         help 
341           This turns on debugging for the shadow paging system
342
343
344 config DEBUG_NESTED_PAGING
345         bool "Nested paging"
346         default n
347         depends on DEBUG_ON
348         help 
349           This turns on debugging for the nested paging system
350
351
352 config DEBUG_CTRL_REGS
353         bool "Control registers"
354         default n
355         depends on DEBUG_ON
356         help 
357           This turns on debugging for the control register handlers
358
359
360 config DEBUG_INTERRUPTS
361         bool "Interrupts"
362         default n
363         depends on DEBUG_ON
364         help 
365           This turns on debugging for the interrupt system
366
367 config DEBUG_TIME
368         bool "Timing"
369         default n
370         depends on DEBUG_ON
371         help
372           This turns on debugging of system time virtualization
373
374 config DEBUG_SCHEDULER
375     bool "Scheduler"
376     default n
377     depends on DEBUG_ON
378     help
379       This turns on debugging for scheduler
380
381 config DEBUG_CPU_MAPPER
382     bool "CPU Mapper"
383     default n
384     depends on DEBUG_ON
385     help
386       This turns on debugging for CPU Mapper
387
388 config DEBUG_IO
389         bool "IO"
390         default n
391         depends on DEBUG_ON
392         help 
393           This turns on debugging for the IO handlers
394
395
396 config DEBUG_EMULATOR
397         bool "Instruction Emulator"
398         default n
399         depends on DEBUG_ON
400         help 
401           This turns on debugging for the Instruction Emulator
402
403
404 config DEBUG_DECODER
405         bool "Instruction Decoder"
406         default n
407         depends on DEBUG_ON
408         help 
409           This turns on debugging for the selected instruction decoder
410
411 config DEBUG_HALT
412         bool "Halt"
413         default n
414         depends on DEBUG_ON
415         help 
416           This turns on debugging for the halt instruction handler
417
418 config DEBUG_MWAIT
419         bool "MWAIT/MONITOR"
420         default n
421         depends on DEBUG_ON
422         help 
423           This turns on debugging for the mwait and monitor instruction handlers
424
425 config DEBUG_DEV_MGR
426         bool "Device Manager"
427         default n
428         depends on DEBUG_ON
429         help 
430           This turns on debugging for the device manager
431
432 config DEBUG_MEM_ERRORS
433     bool "Verbose memory errors"
434     default n
435     depends on DEBUG_ON
436     help
437       This turns on debugging for memory translations and lookups
438
439 config DEBUG_LOCKS
440     bool "Lock debugging (if host supports it)"
441     default n
442     depends on DEBUG_ON
443     help
444       This turns on lock debugging for locks in Palacios and in its host-specifc glue code.  This requires host support.
445
446 config DEBUG_MEM_ALLOC
447     bool "Memory allocation debugging (if host supports it)"
448     default n
449     depends on DEBUG_ON
450     help
451       This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
452
453
454 endmenu
455
456
457 menu "BIOS Selection"
458
459 choice 
460        prompt "Boot Code Selection"
461        default SEABIOS
462         help
463            Select which BIOSes to map into the default PC Class Hardware Configuration
464
465 config SEABIOS
466         bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
467         help
468             Use the SEABIOS and SEABIOS-VGA Boot code
469
470
471 config BOCHSBIOS
472         bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
473         help
474             Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
475
476
477 config OTHERBIOS
478         bool "Use a user-specified BIOS"
479         help
480             Use a user-specified BIOS
481
482
483 endchoice
484
485
486 config SEABIOS_PATH
487         string "Path to pre-built SEABIOS binary"
488         depends on SEABIOS
489         default "./bios/seabios/out/bios.bin"
490         help
491           Path to the SEABIOS binary to use
492
493 config SEABIOSVGA_PATH
494         string "Path to pre-built SEABIOS-VGA binary"
495         depends on SEABIOS
496         default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
497         help 
498           This is the SEABIOS-compatible vgabios that will be used for the guest
499
500 config BOCHSBIOS_PATH
501         string "Path to pre-built BOCHS BIOS binary"
502         depends on BOCHSBIOS
503         default "./bios/rombios/BIOS-bochs-latest"
504         help
505           This is the rombios that will be used for the guests
506
507 config BOCHSBIOSVGA_PATH
508         string "Path to pre-built BOCHS-compatible VGABIOS binary"
509         depends on BOCHSBIOS
510         default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
511         help
512           This is the vgabios that will be used for the guests
513
514 config OTHERBIOS_PATH
515         string "Path to user-specified Boot Code"
516         depends on OTHERBIOS
517         help
518           This is a completely user-determined blob that will be mapped into the guest
519           No VGA BIOS will be mapped!
520
521 config BIOS_START
522         hex "Starting address (linear address) of BIOS"
523         range 0xe0000 0xe0000 if SEABIOS
524         range 0xf0000 0xf0000 if BOCHSBIOS
525         help
526           This is the starting address (linear address) of the BIOS code
527
528
529
530 config VMXASSIST_PATH
531         string "Path to pre-built VMXASSIST binary"
532         depends on VMX
533         default "./bios/vmxassist/vmxassist.bin"
534         help
535           This is vmxassist image to boot real mode guests on 
536           Intel VMX Platforms
537
538 endmenu
539
540
541 source "palacios/src/devices/Kconfig"
542