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.


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