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.


Merge branch 'devel' of palacios@newskysaw.cs.northwestern.edu:/home/palacios/palacio...
[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         select MULTITHREAD_OS
17         help
18           This enables the necesary options to compile Palacios with Kitten
19
20 config LINUX_BUILTIN
21         bool "OLD Linux (Built in) -- to be deprecated"
22         select BUILT_IN_STDLIB
23         select BUILT_IN_ATOI
24         select FILE
25         help
26           This enables the necessary options to compile Palacios with Linux 2.6
27           Currently, this is in development, and only 2.6.32 is verified to work
28
29
30 config LINUX
31         bool "Linux Module"
32         select BUILT_IN_STDLIB
33         select BUILT_IN_STRDUP
34         select BUILT_IN_ATOI
35         select FILE
36         select V3_DECODER
37         help
38           This enables the necessary options to compile Palacios as a Linux module
39  
40
41 config LINUX_KERN
42         depends on LINUX
43         string "Linux Kernel Source directory" 
44         default "/usr/src/linux"
45         help 
46           This is the directory containing the linux source for the kernel module to be built
47
48 config MINIX
49         bool "MINIX 3"
50         help
51           This enables the necesary options to compile Palacios with Kitten
52
53 config OTHER_OS
54         bool "Other OS"
55         help 
56           Choose this to compile Palacios for a Generic Host OS
57           (Formerly GeekOS)
58
59 endchoice
60
61 config CRAY_XT
62         bool "Red Storm (Cray XT3/XT4)"
63         help
64           Support for Cray XT3 and XT4 systems.
65
66 config SVM
67         bool "AMD SVM Support"
68         default y
69         help
70           Compile with support for AMD SVM
71
72 config VMX
73         bool "Intel VMX Support"
74         default y
75         help 
76           Compile with support for Intel VMX
77
78
79 config DEBUG_INFO
80         bool "Compile with Debug Information"
81         default n
82         help
83           Compiles the Palacios library with debugging symbols
84
85 choice 
86         prompt "X86 decoder"
87         default XED
88
89 config XED
90         bool "XED decoder library"
91         depends on !LINUX
92         help
93            This uses the XED decoder library from pintools 
94
95 config V3_DECODER
96         bool "Internal Palacios decoder"
97         help
98             This selects the internal V3Vee x86 decoder
99
100
101 endchoice
102
103 menu "Supported host OS features"
104       
105 config MULTITHREAD_OS
106         bool "Host support for  multiple threads"
107         default y
108         help 
109           Select this if your OS supports multiple threads of execution. This will enable features in Palacios 
110           to require the creation of additional execution threads.
111
112
113 config ALIGNED_PG_ALLOC
114         bool "Host support for aligned page allocations"
115         default n
116         help 
117           Select this if your OS supports allocating memory pages using an alignment. This is required 
118           if you want Palacios to run with large page table pages. 
119
120 config MAX_CPUS
121         int "Maximum number of cpus"
122         range 1 255
123         default "16"
124         help 
125           Specifies the maximum number of hardware CPUs supported by the OS
126           For uniprocessor environments, set this to 1
127
128 config FILE
129         bool "Host Support for file operations"
130         default n
131         help
132           Select this if your host OS supports file operatoins and you want Palacios to be able to use them.
133
134 config KEYED_STREAMS
135         bool "Host support for keyed streams"
136         default n
137         help
138           Select this if your host OS supports keyed streams
139           Palacios Checkpoint/Restore and Migration depends on this feature
140
141 config CONSOLE
142         bool "Host Support for VM text-mode console"
143         default n
144         help 
145           Select this if you want to forward a guest console interface to some host OS service
146           This is for a TEXT MODE console.   Select the framebuffer console for graphics and text
147
148 config GRAPHICS_CONSOLE
149         bool "Host Support for VM graphics and text-mode console based on a frame buffer"
150         default n
151         help 
152           Select this if you want to forward a guest graphics-mode (and text-mode) console 
153           interface to some host OS service.  This is for a GRAPHICS console based on a shared frame buffer.
154           Text mode output is RENDERED onto the framebuffer
155
156 config SOCKET
157         bool "Host support for Network Sockets"
158         default y
159         help
160           Select this if you host OS implements a socket API that is available to Palacios. This is required
161           to support the internal networking features of Palacios.
162
163
164 config PACKET
165         bool "Host support for Raw Packet Transmision"
166         depends on EXPERIMENTAL
167         default n
168         help 
169           Select this if you host OS implements a raw packet network API that is available to Palacios. This is required 
170           to support the internal networking features of Palacios.
171
172 endmenu
173
174
175
176 config TELEMETRY
177         bool "Enable VMM telemetry support"
178         default n
179         help 
180           Enable the telemetry framework in Palacios
181           -----
182           This is a framwork that allows components of palacios to record 
183           information that is periodically reported to the log output.
184           Telemetry is automatically collected for vmexits. Subsystem telemetry 
185           is configured separately
186
187
188 config SHADOW_PAGING_TELEMETRY
189         bool "Enable Shadow Paging Telemetry"
190         default y
191         depends on TELEMETRY
192         help
193           Enable telemetry information for shadow paging 
194
195
196
197 config EXPERIMENTAL
198         bool "Enable Experimental options"
199         default n
200         help 
201           This allows the selection of experimental features. This includes incomplete or unreviewed code. 
202           Only enable this feature if you are working on the features in question. 
203           IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features. 
204           Any code that violates this will be immediately deleted without warning. 
205           -- 
206           The purpose of this option is to allow features under development to be committed to the mainline
207           to more easily track changes and provide access to multiple developers
208
209 config VNET
210         depends on EXPERIMENTAL
211         bool "Enable Vnet in Palacios"
212         default n
213         help
214           Enable the Vnet in Palacios
215
216 config DEBUG_VNET
217         depends on EXPERIMENTAL && VNET
218         bool "Enable Vnet Debug in Palacios"
219         default n
220         help
221           Enable the Vnet debug in Palacios
222
223 config LINUX_VIRTIO_VNET
224         bool "Enable Virtio VNET interface"
225         default n
226         depends on PCI && EXPERIMENTAL && VNET
227         help
228           Enable the Virtio VNET interface
229
230 config DEBUG_LINUX_VIRTIO_VNET
231         bool "Virtio VNET Interface Debugging"
232         default n
233         depends on LINUX_VIRTIO_VNET && DEBUG_ON
234         help
235           Enable debugging for the VNET Virtio interface
236
237 endmenu
238
239
240 source "Kconfig.stdlibs"
241
242
243 menu "Virtual Paging"
244
245 config SHADOW_PAGING
246         bool "Enable shadow paging"
247         default y
248         help 
249            Enables shadow paging for virtual machines
250
251
252 config SHADOW_PAGING_VTLB
253         bool "Virtual TLB"
254         default y
255         depends on SHADOW_PAGING
256         help 
257            Enables Virtual TLB implemenation for shadow paging
258
259
260 config DEBUG_SHDW_PG_VTLB
261         bool "Enable VTLB debugging"
262         default n
263         depends on SHADOW_PAGING_VTLB
264         help
265           Enables debugging messages for VTLB implementation
266
267 config SHADOW_PAGING_CACHE1
268         bool "Shadow Page Cache (1)"
269         default y
270         depends on SHADOW_PAGING
271         help 
272            Enables caching implemenation for shadow paging
273
274
275 endmenu
276
277
278 menu "Time Management"
279 config VIRTUALIZE_TIME
280         bool "Enable Time virtualization"
281         default n
282         help
283            Enables the timer virtualization extensions
284  
285 config TIME_HIDE_VM_COST
286         bool "Hide VMM Run Cost"
287         default n
288         depends on VIRTUALIZE_TIME
289         help
290             Offset guest time from host time sufficiently to hide the cost of
291             running in the virtual machine. This can aid the consistency of
292             time between multiple timers, but can cause the guest to run 
293             a good bit slower than the host in VM-intensive parts of the code.
294
295 config TIME_VIRTUALIZE_TSC
296         bool "Fully virtualize guest TSC"
297         default n
298         depends on VIRTUALIZE_TIME
299         help
300             Virtualize the processor time stamp counter in the guest, 
301             generally increasing consistency between various time sources 
302             but also potentially making guest time run slower than real time.
303          
304 endmenu
305
306 menu "Symbiotic Functions"
307
308 config SYMBIOTIC
309         bool "Enable Symbiotic Functionality"
310         default n
311         help 
312           Enable Symbiotic components of the VMM. 
313           This includes the SymSpy interface.
314
315 config SYMCALL
316         bool "Symbiotic upcalls"
317         default n
318         depends on SYMBIOTIC && EXPERIMENTAL
319         help
320           Enables the Symbiotic upcall interface
321
322 config SWAPBYPASS
323         bool "SwapBypass"
324         default n
325         depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
326         help 
327           This enables the SwapBypass architecture
328
329 config SWAPBYPASS_TELEMETRY
330         bool "Enable SwapBypass Telemetry"
331         default n
332         depends on TELEMETRY && SWAPBYPASS
333         help 
334           Enable the telemetry information for the SwapBypass subsystem
335
336 menuconfig SYMMOD 
337         bool "Symbiotic Modules"
338         default n
339         depends on EXPERIMENTAL
340 #       depends on SYMBIOTIC
341         help
342           Enable Symbiotic module loading
343
344
345 endmenu
346
347
348
349 menu "Debug configuration"
350
351 config CONFIG_DEBUG_INFO
352         bool "Compile with Debug information"
353         default n
354         help 
355          This adds the -g flag to the compilation flags
356
357
358 ## Is unwind information useful
359
360 config DEBUG_ON
361         bool "Enable Debugging"
362         default y
363         help
364           This turns on debugging support
365
366
367 config DEBUG_SVM
368         bool "AMD SVM"
369         default n
370         depends on DEBUG_ON
371         help 
372           This turns on debugging for the AMD SVM-specific code
373
374 config DEBUG_VMX
375         bool "Intel VT"
376         default n
377         depends on DEBUG_ON
378         help 
379           This turns on debugging for the Intel VT-specific code
380
381
382 config DEBUG_SHADOW_PAGING
383         bool "Shadow paging"
384         default n
385         depends on DEBUG_ON
386         help 
387           This turns on debugging for the shadow paging system
388
389
390 config DEBUG_NESTED_PAGING
391         bool "Nested paging"
392         default n
393         depends on DEBUG_ON
394         help 
395           This turns on debugging for the nested paging system
396
397
398 config DEBUG_CTRL_REGS
399         bool "Control registers"
400         default n
401         depends on DEBUG_ON
402         help 
403           This turns on debugging for the control register handlers
404
405
406 config DEBUG_INTERRUPTS
407         bool "Interrupts"
408         default n
409         depends on DEBUG_ON
410         help 
411           This turns on debugging for the interrupt system
412
413 config DEBUG_TIME
414         bool "Timing"
415         default n
416         depends on DEBUG_ON
417         help
418           This turns on debugging of system time virtualization
419
420 config DEBUG_IO
421         bool "IO"
422         default n
423         depends on DEBUG_ON
424         help 
425           This turns on debugging for the IO handlers
426
427
428 config DEBUG_EMULATOR
429         bool "Instruction Emulator"
430         default n
431         depends on DEBUG_ON
432         help 
433           This turns on debugging for the Instruction Emulator
434
435
436 config DEBUG_DECODER
437         bool "Instruction Decoder"
438         default n
439         depends on DEBUG_ON
440         help 
441           This turns on debugging for the selected instruction decoder
442
443 config DEBUG_HALT
444         bool "Halt"
445         default n
446         depends on DEBUG_ON
447         help 
448           This turns on debugging for the halt instruction handler
449
450 config DEBUG_DEV_MGR
451         bool "Device Manager"
452         default n
453         depends on DEBUG_ON
454         help 
455           This turns on debugging for the device manager
456
457
458
459
460 endmenu
461
462
463 menu "BIOS Selection"
464
465 config ROMBIOS_PATH
466         string "Path to pre-built ROMBIOS binary"
467         default "./bios/rombios/BIOS-bochs-latest"
468         help
469           This is the rombios that will be used for the guests
470
471 config VGABIOS_PATH
472         string "Path to pre-built VGABIOS binary"
473         default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
474         help
475           This is the vgabios that will be used for the guests
476
477 config VMXASSIST_PATH
478         string "Path to pre-built VMXASSIST binary"
479         depends on VMX
480         default "./bios/vmxassist/vmxassist.bin"
481         help
482           This is vmxassist image to boot real mode guests on 
483           Intel VMX Platforms
484
485 endmenu
486
487
488 source "palacios/src/devices/Kconfig"
489