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.


additions for syscall hijacking
[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
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 SYSCALL_HIJACK
182     bool "Enable System Call Interposition"
183     depends on EXPERIMENTAL
184     default n
185     help
186       Enable the VMM to hijack system calls executed by the guest.
187       If enabled, the VMM will intercept software interrupt (INT) instructions,
188       Fast-System Call instructions (SYSENTER, SYSCALL), and the LIDT instruction
189
190 config HIJACK_SYSCALL_MSR
191     bool "Intercept Syscall-related MSR reads & writes"
192     depends on SYSCALL_HIJACK 
193     default n
194     help
195       Allow the VMM to intercept reads and writes to MSRs
196       related to SYSCALL and SYSENTER instructions. Specifically,
197       it will intercept R/W to STAR, CSTAR, and LSTAR.
198
199 endmenu
200
201
202 source "Kconfig.stdlibs"
203
204
205 menu "Virtual Paging"
206
207 config SHADOW_PAGING
208         bool "Enable shadow paging"
209         default y
210         help 
211            Enables shadow paging for virtual machines
212
213
214 config SHADOW_PAGING_VTLB
215         bool "Virtual TLB"
216         default y
217         depends on SHADOW_PAGING
218         help 
219            Enables Virtual TLB implemenation for shadow paging
220
221
222 config DEBUG_SHDW_PG_VTLB
223         bool "Enable VTLB debugging"
224         default n
225         depends on SHADOW_PAGING_VTLB
226         help
227           Enables debugging messages for VTLB implementation
228
229 config SHADOW_PAGING_CACHE1
230         bool "Shadow Page Cache (1)"
231         default y
232         depends on SHADOW_PAGING
233         help 
234            Enables caching implemenation for shadow paging
235
236
237 endmenu
238
239
240
241 menu "Time Management"
242 config VIRTUALIZE_TIME
243         bool "Enable Time virtualization"
244         default n
245         help
246            Enables the timer virtualization extensions
247  
248 config TIME_HIDE_VM_COST
249         bool "Hide VMM Run Cost"
250         default n
251         depends on VIRTUALIZE_TIME
252         help
253             Offset guest time from host time sufficiently to hide the cost of
254             running in the virtual machine. This can aid the consistency of
255             time between multiple timers, but can cause the guest to run 
256             a good bit slower than the host in VM-intensive parts of the code.
257
258 config TIME_VIRTUALIZE_TSC
259         bool "Fully virtualize guest TSC"
260         default n
261         depends on VIRTUALIZE_TIME
262         help
263             Virtualize the processor time stamp counter in the guest, 
264             generally increasing consistency between various time sources 
265             but also potentially making guest time run slower than real time.
266          
267 endmenu
268
269
270
271 menu "Symbiotic Functions"
272
273 config SYMBIOTIC
274         bool "Enable Symbiotic Functionality"
275         default n
276         help 
277           Enable Symbiotic components of the VMM. 
278           This includes the SymSpy interface.
279
280 config SYMCALL
281         bool "Symbiotic upcalls"
282         default n
283         depends on SYMBIOTIC && EXPERIMENTAL
284         help
285           Enables the Symbiotic upcall interface
286
287 config SWAPBYPASS
288         bool "SwapBypass"
289         default n
290         depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
291         help 
292           This enables the SwapBypass architecture
293
294 config SWAPBYPASS_TELEMETRY
295         bool "Enable SwapBypass Telemetry"
296         default n
297         depends on TELEMETRY && SWAPBYPASS
298         help 
299           Enable the telemetry information for the SwapBypass subsystem
300
301 menuconfig SYMMOD 
302         bool "Symbiotic Modules"
303         default n
304         depends on EXPERIMENTAL
305 #       depends on SYMBIOTIC
306         help
307           Enable Symbiotic module loading
308
309
310 endmenu
311
312
313
314 menu "Debug configuration"
315
316 config CONFIG_DEBUG_INFO
317         bool "Compile with Debug information"
318         default n
319         help 
320          This adds the -g flag to the compilation flags
321
322
323 ## Is unwind information useful
324
325 config DEBUG_ON
326         bool "Enable Debugging"
327         default y
328         help
329           This turns on debugging support
330
331
332 config DEBUG_SVM
333         bool "AMD SVM"
334         default n
335         depends on DEBUG_ON
336         help 
337           This turns on debugging for the AMD SVM-specific code
338
339 config DEBUG_VMX
340         bool "Intel VT"
341         default n
342         depends on DEBUG_ON
343         help 
344           This turns on debugging for the Intel VT-specific code
345
346
347 config DEBUG_SHADOW_PAGING
348         bool "Shadow paging"
349         default n
350         depends on DEBUG_ON
351         help 
352           This turns on debugging for the shadow paging system
353
354
355 config DEBUG_NESTED_PAGING
356         bool "Nested paging"
357         default n
358         depends on DEBUG_ON
359         help 
360           This turns on debugging for the nested paging system
361
362
363 config DEBUG_CTRL_REGS
364         bool "Control registers"
365         default n
366         depends on DEBUG_ON
367         help 
368           This turns on debugging for the control register handlers
369
370
371 config DEBUG_INTERRUPTS
372         bool "Interrupts"
373         default n
374         depends on DEBUG_ON
375         help 
376           This turns on debugging for the interrupt system
377
378 config DEBUG_TIME
379         bool "Timing"
380         default n
381         depends on DEBUG_ON
382         help
383           This turns on debugging of system time virtualization
384
385 config DEBUG_IO
386         bool "IO"
387         default n
388         depends on DEBUG_ON
389         help 
390           This turns on debugging for the IO handlers
391
392
393 config DEBUG_EMULATOR
394         bool "Instruction Emulator"
395         default n
396         depends on DEBUG_ON
397         help 
398           This turns on debugging for the Instruction Emulator
399
400
401 config DEBUG_DECODER
402         bool "Instruction Decoder"
403         default n
404         depends on DEBUG_ON
405         help 
406           This turns on debugging for the selected instruction decoder
407
408 config DEBUG_HALT
409         bool "Halt"
410         default n
411         depends on DEBUG_ON
412         help 
413           This turns on debugging for the halt instruction handler
414
415 config DEBUG_DEV_MGR
416         bool "Device Manager"
417         default n
418         depends on DEBUG_ON
419         help 
420           This turns on debugging for the device manager
421
422 config DEBUG_VNET
423         depends on EXPERIMENTAL && VNET
424         bool "Enable Vnet Debug in Palacios"
425         default n
426         help
427           Enable the Vnet debug in Palacios
428
429 config DEBUG_SYSCALL_HIJACK
430         bool "Enable Syscall hijack Debug in Palacios"
431         default n
432         depends on EXPERIMENTAL && SYSCALL_HIJACK && DEBUG_ON
433         help
434           Enable Debugging printouts for syscall hijacking
435           code in Palacios
436
437 endmenu
438
439
440 menu "BIOS Selection"
441
442 config ROMBIOS_PATH
443         string "Path to pre-built ROMBIOS binary"
444         default "./bios/rombios/BIOS-bochs-latest"
445         help
446           This is the rombios that will be used for the guests
447
448 config VGABIOS_PATH
449         string "Path to pre-built VGABIOS binary"
450         default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
451         help
452           This is the vgabios that will be used for the guests
453
454 config VMXASSIST_PATH
455         string "Path to pre-built VMXASSIST binary"
456         depends on VMX
457         default "./bios/vmxassist/vmxassist.bin"
458         help
459           This is vmxassist image to boot real mode guests on 
460           Intel VMX Platforms
461
462 endmenu
463
464
465 source "palacios/src/devices/Kconfig"
466