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