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.


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