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.


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