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 ability to inject an env variable into guest user process
[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 endmenu
129
130 source "palacios/src/interfaces/Kconfig"
131 source "palacios/src/extensions/Kconfig"
132
133 config TELEMETRY
134         bool "Enable VMM telemetry support"
135         default n
136         help 
137           Enable the telemetry framework in Palacios
138           -----
139           This is a framwork that allows components of palacios to record 
140           information that is periodically reported to the log output.
141           Telemetry is automatically collected for vmexits. Subsystem telemetry 
142           is configured separately
143
144
145 config SHADOW_PAGING_TELEMETRY
146         bool "Enable Shadow Paging Telemetry"
147         default y
148         depends on TELEMETRY
149         help
150           Enable telemetry information for shadow paging 
151
152
153
154 config EXPERIMENTAL
155         bool "Enable Experimental options"
156         default n
157         help 
158           This allows the selection of experimental features. This includes incomplete or unreviewed code. 
159           Only enable this feature if you are working on the features in question. 
160           IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features. 
161           Any code that violates this will be immediately deleted without warning. 
162           -- 
163           The purpose of this option is to allow features under development to be committed to the mainline
164           to more easily track changes and provide access to multiple developers
165
166 config VNET
167         depends on EXPERIMENTAL
168         bool "Enable Vnet in Palacios"
169         default n
170         help
171           Enable the Vnet in Palacios
172
173
174 config INSPECTOR
175         bool "Enable VM inspection"
176         depends on EXPERIMENTAL
177         default n
178         help 
179           Enable inspection framework for vm internal state
180
181 config SW_INTERRUPTS
182     bool "Enable interception and hooking of software interrupts"
183     depends on EXPERIMENTAL
184     default n
185     help
186       This feature will cause the VMM to intercept the execution
187       of software interrupts (i.e. the INTn instruction) and enable
188       any INT vector to be hooked
189
190 config SWINTR_PASSTHROUGH
191     bool "Hook all unhandled sofware interrupts for passthrough"
192     depends on SW_INTERRUPTS
193     default n
194     help
195       If enabled, this will cause all software interrupts 
196       (INT instruction vectors) to be hooked for passthrough.
197       May reduce performance but useful for debugging.
198
199 config SYSCALL_HIJACK
200     bool "Enable System Call Hijacking"
201     depends on SW_INTERRUPTS
202     default n
203     help
204       Enable the VMM to hijack system calls executed by the guest.
205       If enabled, the VMM will hook execution of INT 80
206       (support for Fast-System Calls coming soon)
207
208 config SYSCALL_PASSTHROUGH
209     bool "Hook all unhandled system calls for passthrough"
210     depends on SYSCALL_HIJACK
211     default n
212     help
213       If enabled, this option will cause all system calls
214       that are not explicitly hooked to be hooked for 
215       passthrough. This is useful for debugging.
216
217 config HIJACK_SYSCALL_MSR
218     bool "Intercept Syscall-related MSR reads & writes"
219     depends on SYSCALL_HIJACK 
220     default n
221     help
222       Allow the VMM to intercept reads and writes to MSRs
223       related to SYSCALL and SYSENTER instructions. Specifically,
224       it will intercept R/W to STAR, CSTAR, and LSTAR.
225
226 endmenu
227
228
229 source "Kconfig.stdlibs"
230
231
232 menu "Virtual Paging"
233
234 config SHADOW_PAGING
235         bool "Enable shadow paging"
236         default y
237         help 
238            Enables shadow paging for virtual machines
239
240
241 config SHADOW_PAGING_VTLB
242         bool "Virtual TLB"
243         default y
244         depends on SHADOW_PAGING
245         help 
246            Enables Virtual TLB implemenation for shadow paging
247
248
249 config DEBUG_SHDW_PG_VTLB
250         bool "Enable VTLB debugging"
251         default n
252         depends on SHADOW_PAGING_VTLB
253         help
254           Enables debugging messages for VTLB implementation
255
256 config SHADOW_PAGING_CACHE1
257         bool "Shadow Page Cache (1)"
258         default y
259         depends on SHADOW_PAGING
260         help 
261            Enables caching implemenation for shadow paging
262
263
264 endmenu
265
266
267
268 menu "Time Management"
269 config VIRTUALIZE_TIME
270         bool "Enable Time virtualization"
271         default n
272         help
273            Enables the timer virtualization extensions
274  
275 config TIME_HIDE_VM_COST
276         bool "Hide VMM Run Cost"
277         default n
278         depends on VIRTUALIZE_TIME
279         help
280             Offset guest time from host time sufficiently to hide the cost of
281             running in the virtual machine. This can aid the consistency of
282             time between multiple timers, but can cause the guest to run 
283             a good bit slower than the host in VM-intensive parts of the code.
284
285 config TIME_VIRTUALIZE_TSC
286         bool "Fully virtualize guest TSC"
287         default n
288         depends on VIRTUALIZE_TIME
289         help
290             Virtualize the processor time stamp counter in the guest, 
291             generally increasing consistency between various time sources 
292             but also potentially making guest time run slower than real time.
293          
294 endmenu
295
296
297
298 menu "Symbiotic Functions"
299
300 config SYMBIOTIC
301         bool "Enable Symbiotic Functionality"
302         default n
303         help 
304           Enable Symbiotic components of the VMM. 
305           This includes the SymSpy interface.
306
307 config SYMCALL
308         bool "Symbiotic upcalls"
309         default n
310         depends on SYMBIOTIC && EXPERIMENTAL
311         help
312           Enables the Symbiotic upcall interface
313
314 config SWAPBYPASS
315         bool "SwapBypass"
316         default n
317         depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
318         help 
319           This enables the SwapBypass architecture
320
321 config SWAPBYPASS_TELEMETRY
322         bool "Enable SwapBypass Telemetry"
323         default n
324         depends on TELEMETRY && SWAPBYPASS
325         help 
326           Enable the telemetry information for the SwapBypass subsystem
327
328 menuconfig SYMMOD 
329         bool "Symbiotic Modules"
330         default n
331         depends on EXPERIMENTAL
332 #       depends on SYMBIOTIC
333         help
334           Enable Symbiotic module loading
335
336
337 endmenu
338
339
340
341 menu "Debug configuration"
342
343 config CONFIG_DEBUG_INFO
344         bool "Compile with Debug information"
345         default n
346         help 
347          This adds the -g flag to the compilation flags
348
349
350 ## Is unwind information useful
351
352 config DEBUG_ON
353         bool "Enable Debugging"
354         default y
355         help
356           This turns on debugging support
357
358
359 config DEBUG_SVM
360         bool "AMD SVM"
361         default n
362         depends on DEBUG_ON
363         help 
364           This turns on debugging for the AMD SVM-specific code
365
366 config DEBUG_VMX
367         bool "Intel VT"
368         default n
369         depends on DEBUG_ON
370         help 
371           This turns on debugging for the Intel VT-specific code
372
373
374 config DEBUG_SHADOW_PAGING
375         bool "Shadow paging"
376         default n
377         depends on DEBUG_ON
378         help 
379           This turns on debugging for the shadow paging system
380
381
382 config DEBUG_NESTED_PAGING
383         bool "Nested paging"
384         default n
385         depends on DEBUG_ON
386         help 
387           This turns on debugging for the nested paging system
388
389
390 config DEBUG_CTRL_REGS
391         bool "Control registers"
392         default n
393         depends on DEBUG_ON
394         help 
395           This turns on debugging for the control register handlers
396
397
398 config DEBUG_INTERRUPTS
399         bool "Interrupts"
400         default n
401         depends on DEBUG_ON
402         help 
403           This turns on debugging for the interrupt system
404
405 config DEBUG_TIME
406         bool "Timing"
407         default n
408         depends on DEBUG_ON
409         help
410           This turns on debugging of system time virtualization
411
412 config DEBUG_IO
413         bool "IO"
414         default n
415         depends on DEBUG_ON
416         help 
417           This turns on debugging for the IO handlers
418
419
420 config DEBUG_EMULATOR
421         bool "Instruction Emulator"
422         default n
423         depends on DEBUG_ON
424         help 
425           This turns on debugging for the Instruction Emulator
426
427
428 config DEBUG_DECODER
429         bool "Instruction Decoder"
430         default n
431         depends on DEBUG_ON
432         help 
433           This turns on debugging for the selected instruction decoder
434
435 config DEBUG_HALT
436         bool "Halt"
437         default n
438         depends on DEBUG_ON
439         help 
440           This turns on debugging for the halt instruction handler
441
442 config DEBUG_DEV_MGR
443         bool "Device Manager"
444         default n
445         depends on DEBUG_ON
446         help 
447           This turns on debugging for the device manager
448
449 config DEBUG_VNET
450         depends on EXPERIMENTAL && VNET
451         bool "Enable Vnet Debug in Palacios"
452         default n
453         help
454           Enable the Vnet debug in Palacios
455
456 config DEBUG_SYSCALL_HIJACK
457         bool "Enable Syscall Hijack Debug in Palacios"
458         default n
459         depends on DEBUG_ON && SYSCALL_HIJACK
460         help
461           Enable Debugging printouts for syscall hijacking
462           code in Palacios
463
464
465 endmenu
466
467
468 menu "BIOS Selection"
469
470 config ROMBIOS_PATH
471         string "Path to pre-built ROMBIOS binary"
472         default "./bios/rombios/BIOS-bochs-latest"
473         help
474           This is the rombios that will be used for the guests
475
476 config VGABIOS_PATH
477         string "Path to pre-built VGABIOS binary"
478         default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
479         help
480           This is the vgabios that will be used for the guests
481
482 config VMXASSIST_PATH
483         string "Path to pre-built VMXASSIST binary"
484         depends on VMX
485         default "./bios/vmxassist/vmxassist.bin"
486         help
487           This is vmxassist image to boot real mode guests on 
488           Intel VMX Platforms
489
490 endmenu
491
492
493 source "palacios/src/devices/Kconfig"
494