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.


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