-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKconfig
766 lines (599 loc) · 17.9 KB
/
Kconfig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
mainmenu "Palacios VMM Configuration"
menu "Target Configuration"
choice
prompt "Target Host OS"
default KITTEN
config KITTEN
bool "Kitten OS"
select BUILT_IN_STDLIB
select BUILT_IN_STRCASECMP
select BUILT_IN_ATOI
select ALIGNED_PG_ALLOC
help
This enables the necesary options to compile Palacios with Kitten
config LINUX_BUILTIN
bool "OLD Linux (Built in) -- to be deprecated"
select BUILT_IN_STDLIB
select BUILT_IN_ATOI
select FILE
help
This enables the necessary options to compile Palacios with Linux 2.6
Currently, this is in development, and only 2.6.32 is verified to work
config LINUX
bool "Linux Module"
select BUILT_IN_STDLIB
select BUILT_IN_STRDUP
select BUILT_IN_ATOI
select BUILT_IN_STRTOX
select BUILT_IN_STRTOI
select BUILT_IN_ATOX
select FILE
select V3_DECODER
help
This enables the necessary options to compile Palacios as a Linux module
config LINUX_KERN
depends on LINUX
string "Linux Kernel Source directory"
default "/usr/src/linux"
help
This is the directory containing the linux source for the kernel module to be built
config MINIX
bool "MINIX 3"
help
This enables the necesary options to compile Palacios with Minix
config NAUTILUS
bool "Nautilus"
select V3_DECODER
select FRAME_POINTER
help
This enables the necessary options to compile Palacios
for inclusion in the Nautilus kernel
config NAUTILUS_KERN
depends on NAUTILUS
string "Nautilus Kernel Source directory"
default "../nautilus"
help
This is the directory containing the
Nautilus sources
config OTHER_OS
bool "Other OS"
help
Choose this to compile Palacios for a Generic Host OS
(Formerly GeekOS)
endchoice
source "Kconfig.stdlibs"
config CRAY_XT
bool "Red Storm (Cray XT3/XT4)"
help
Support for Cray XT3 and XT4 systems.
config SVM
bool "AMD SVM Support"
default y
help
Compile with support for AMD SVM
config VMX
bool "Intel VMX Support"
default y
help
Compile with support for Intel VMX
config FRAME_POINTER
bool "Compile with Frame pointers"
default n
help
Compiles the Palacios library with Frame pointers
config DEBUG_INFO
bool "Compile with Debug Information"
default n
help
Compiles the Palacios library with debugging symbols
choice
prompt "X86 decoder"
default XED
config XED
bool "XED decoder library"
depends on !LINUX
help
This uses the XED decoder library from pintools
config V3_DECODER
bool "Internal Palacios decoder"
help
This selects the internal V3Vee x86 decoder
config QUIX86
bool "QUIX86 decoder"
help
This selects the QUIX86 decoder library
config QUIX86_DEBUG
bool "QUIX86 decoder debug version"
help
This selects the QUIX86 decoder library compiled w/o optimization
and with debug info
endchoice
menu "Supported host OS features"
config MEM_BLOCK_SIZE
int "Allocation size for underlying VM memory"
default 134217728
help
This is the default size in bytes of the underlying memory allocations used for the base memory regions.
A good default value is 128MB (134217728 or 0x8000000 bytes). Note that the host interface must be able
to provide contiguous memory of at least this size in order for VMs to typically work. This
value can be overriden via a load-time option, provided the host supports this.
config ALIGNED_PG_ALLOC
bool "Host support for aligned page allocations"
default n
help
Select this if your OS supports allocating memory pages using an alignment. This is required
if you want Palacios to run with large page table pages.
config MAX_CPUS
int "Maximum number of cpus"
range 1 255
default "16"
help
Specifies the maximum number of hardware CPUs supported by the OS
For uniprocessor environments, set this to 1
endmenu
source "palacios/src/interfaces/Kconfig"
menu "Virtual core specialization"
config CUSTOM_CPUID
bool "Use custom CPU information (vendor, etc)"
default n
help
If set, the CPU information will be for a special V3VEE vendor.
This should result in identical guest kernel setup, regardless
of the underlying hardware, but it also means that the guest kernel
has no chance of employing CPU-specific bug fixes.
config STRICT_MSR_SEMANTICS
bool "Use strict RDMSR/WRMSR semantics"
default n
help
Use strict MSR semantics - when an unhandled MSR is read or written,
a GPF is generated. This is typically usd with CUSTOM_CPU_TYPE on.
config FP_SWITCH
bool "Floating point context switching"
default n
help
If set, floating point is handled for context switches
(VM1->VM2->VM1 and/or VM->HOST->VM). This can be disabled
for environments where a single VM is the only user of FP.
Note that even if disabled, FP save/restore code is included
for support of checkpoint/restore.
config LAZY_FP_SWITCH
bool "Use host-based lazy floating point context switching"
depends on FP_SWITCH && HOST_LAZY_FPU_SWITCH
default y
help
When true, the host's lazy floating point save/restore
mechanism is notified on each exit and entry. If false,
the floating point state is explicitly saved on each exit
and restored on each entry---this save/restore is entirely
done in Palacios.
config CACHEPART
bool "Support last-level cache partitioning"
depends on CACHE_INFO && EXPERIMENTAL
default y
help
When true, <cachepart> can be used to select which page colors
are allowed to be used by the VM, thus limiting it to a portion
of the last level shared cache.
This is an experimental option and requires a lot of careful
configuration to work. In particular, memory base regions must be
a page size, and initial allocation of the VM may take a long
time depending on the host's page allocator.
config DEBUG_CACHEPART
bool "Enable debugging of cache partitioning"
depends on CACHEPART
default n
help
Generate output from the debugging statements in cache partitioning
endmenu
source "palacios/src/extensions/Kconfig"
config TELEMETRY
bool "Enable VMM telemetry support"
default n
help
Enable the telemetry framework in Palacios
-----
This is a framwork that allows components of palacios to record
information that is periodically reported to the log output.
Telemetry is automatically collected for vmexits. Subsystem telemetry
is configured separately
config SHADOW_PAGING_TELEMETRY
bool "Enable Shadow Paging Telemetry"
default y
depends on TELEMETRY
help
Enable telemetry information for shadow paging
config PMU_TELEMETRY
bool "Enable PMU telemetry"
default n
depends on TELEMETRY && HOST_PMU
help
Enable telemetry information for a range of PMU counters
This causes the currently configured PMU counts to be printed
config PWRSTAT_TELEMETRY
bool "Enable power statistics telemetry"
default n
depends on TELEMETRY && HOST_PWRSTAT
help
Enable telemetry information for power/energy counters
config EXPERIMENTAL
bool "Enable Experimental options"
default n
help
This allows the selection of experimental features. This includes incomplete or unreviewed code.
Only enable this feature if you are working on the features in question.
IMPORTANT: Non-experimental code MUST NOT use, require, or rely on experimental features.
Any code that violates this will be immediately deleted without warning.
--
The purpose of this option is to allow features under development to be committed to the mainline
to more easily track changes and provide access to multiple developers
config CHECKPOINT
bool "Enable Checkpointing"
default n
help
Enable checkpointing functionality (save/load VMs)
config LIVE_MIGRATION
bool "Enable Live Migration"
depends on CHECKPOINT
default n
help
Enable live migration functionality (send/receive VMs)
config DEBUG_CHECKPOINT
bool "Enable Checkpointing and Live Migration Debugging Output"
depends on CHECKPOINT
default n
help
Generate output from the debugging statements in checkpointing and live migration
endmenu
menu "Debug Configuration"
## Is unwind information useful
config DEBUG_ON
bool "Enable Debugging"
default y
help
This turns on debugging support
config DEBUG_SVM
bool "AMD SVM"
default n
depends on DEBUG_ON
help
This turns on debugging for the AMD SVM-specific code
config DEBUG_VMX
bool "Intel VT"
default n
depends on DEBUG_ON
help
This turns on debugging for the Intel VT-specific code
config DEBUG_SHADOW_PAGING
bool "Shadow paging"
default n
depends on DEBUG_ON
help
This turns on debugging for the shadow paging system
config DEBUG_NESTED_PAGING
bool "Nested paging"
default n
depends on DEBUG_ON
help
This turns on debugging for the nested paging system
config DEBUG_CTRL_REGS
bool "Control registers"
default n
depends on DEBUG_ON
help
This turns on debugging for the control register handlers
config DEBUG_INTERRUPTS
bool "Interrupts"
default n
depends on DEBUG_ON
help
This turns on debugging for the interrupt system
config DEBUG_TIME
bool "Timing"
default n
depends on DEBUG_ON
help
This turns on debugging of system time virtualization
config DEBUG_SCHEDULER
bool "Scheduler"
default n
depends on DEBUG_ON
help
This turns on debugging for scheduler
config DEBUG_CPU_MAPPER
bool "CPU Mapper"
default n
depends on DEBUG_ON
help
This turns on debugging for CPU Mapper
config DEBUG_IO
bool "IO"
default n
depends on DEBUG_ON
help
This turns on debugging for the IO handlers
config DEBUG_EMULATOR
bool "Instruction Emulator"
default n
depends on DEBUG_ON
help
This turns on debugging for the Instruction Emulator
config DEBUG_DECODER
bool "Instruction Decoder"
default n
depends on DEBUG_ON
help
This turns on debugging for the selected instruction decoder
config DEBUG_HALT
bool "Halt"
default n
depends on DEBUG_ON
help
This turns on debugging for the halt instruction handler
config DEBUG_MWAIT
bool "MWAIT/MONITOR"
default n
depends on DEBUG_ON
help
This turns on debugging for the mwait and monitor instruction handlers
config DEBUG_DEV_MGR
bool "Device Manager"
default n
depends on DEBUG_ON
help
This turns on debugging for the device manager
config DEBUG_MEM_ERRORS
bool "Verbose memory errors"
default n
depends on DEBUG_ON
help
This turns on debugging for memory translations and lookups
config DEBUG_LOCKS
bool "Lock debugging (if host supports it)"
default n
depends on DEBUG_ON
help
This turns on lock debugging for locks in Palacios and in its host-specifc glue code. This requires host support.
config DEBUG_MEM_ALLOC
bool "Memory allocation debugging (if host supports it)"
default n
depends on DEBUG_ON
help
This turns on memory allocation debugging in Palacios, using the mechanisms provided by the host
endmenu
menu "Virtual Paging"
config NESTED_PAGING
bool "Enable nested paging"
default y
help
Enable nested paging (should always be on)
config SHADOW_PAGING
bool "Enable shadow paging"
default y
help
Enables shadow paging for virtual machines
config SHADOW_PAGING_VTLB
bool "Virtual TLB"
default y
depends on SHADOW_PAGING
help
Enables Virtual TLB implemenation for shadow paging
Virtual TLB now uses PAE so there are no 4 GB restrictions
config DEBUG_SHDW_PG_VTLB
bool "Enable VTLB debugging"
default n
depends on SHADOW_PAGING_VTLB
help
Enables debugging messages for VTLB implementation
config SHADOW_PAGING_CACHE
bool "Shadow Page Cache"
default n
depends on SHADOW_PAGING && EXPERIMENTAL
help
Enables caching implementation of shadow paging
config DEBUG_SHADOW_PAGING_CACHE
bool "Enable Shadow Page Cache Debugging"
default n
depends on SHADOW_PAGING_CACHE
help
Enables debugging messages for the VTLB + Caching implementation
#config SHADOW_PAGING_KVM
# bool "KVM-style Shadow Pager"
# default n
# depends on SHADOW_PAGING && EXPERIMENTAL
# help
# Enables shadow pager derived from KVM
# You probably do not want this and it will probably not compile!
#
#config DEBUG_SHADOW_PAGING_KVM
# bool "Enable KVM-style Shadow Pager Debugging"
# default n
# depends on SHADOW_PAGING_KVM
# help
# Enables debugging messages for the KVM-style shadow pager
config SWAPPING
bool "Enable swapping"
default n
depends on (SHADOW_PAGING || NESTED_PAGING) && FILE
help
Enables swapping of regions of guest physical memory to a file
config DEBUG_SWAPPING
bool "Enable swapping debugging"
default n
depends on SWAPPING
help
Provides debugging output from the swapping system
config MEM_TRACK
bool "Enable memory access tracking"
default n
depends on SHADOW_PAGING || NESTED_PAGING
help
Allows tracking of memory accesses on a page granularity
config DEBUG_MEM_TRACK
bool "Enable memory access tracking debugging"
default n
depends on MEM_TRACK
help
Provides debugging output for memory access tracking
endmenu
source "palacios/src/devices/Kconfig"
menu "Boot Environments"
menu "BIOS"
choice
prompt "Boot Code Selection"
default SEABIOS
help
Select which BIOSes to map into the default PC Class Hardware Configuration
config SEABIOS
bool "Use the SEABIOS and SEABIOS-VGA Boot Code"
help
Use the SEABIOS and SEABIOS-VGA Boot code
config BOCHSBIOS
bool "Use the BOCHS BIOS and BOCHS BIOS-compatible VGA Boot Code"
help
Use the BOCHS BIOS and BOCHS-BIOS-compatible VGA Boot Code
config OTHERBIOS
bool "Use a user-specified BIOS"
help
Use a user-specified BIOS
endchoice
config SEABIOS_PATH
string "Path to pre-built SEABIOS binary"
depends on SEABIOS
default "./bios/seabios/out/bios.bin"
help
Path to the SEABIOS binary to use
config SEABIOSVGA_PATH
string "Path to pre-built SEABIOS-VGA binary"
depends on SEABIOS
default "./bios/seabios-vga/VGABIOS-lgpl-latest.bin"
help
This is the SEABIOS-compatible vgabios that will be used for the guest
config BOCHSBIOS_PATH
string "Path to pre-built BOCHS BIOS binary"
depends on BOCHSBIOS
default "./bios/rombios/BIOS-bochs-latest"
help
This is the rombios that will be used for the guests
config BOCHSBIOSVGA_PATH
string "Path to pre-built BOCHS-compatible VGABIOS binary"
depends on BOCHSBIOS
default "./bios/vgabios/VGABIOS-lgpl-latest.bin"
help
This is the vgabios that will be used for the guests
config OTHERBIOS_PATH
string "Path to user-specified Boot Code"
depends on OTHERBIOS
help
This is a completely user-determined blob that will be mapped into the guest
No VGA BIOS will be mapped!
config BIOS_START
hex "Starting address (linear address) of BIOS"
range 0xe0000 0xe0000 if SEABIOS
range 0xf0000 0xf0000 if BOCHSBIOS
help
This is the starting address (linear address) of the BIOS code
config VMXASSIST_PATH
string "Path to pre-built VMXASSIST binary"
depends on VMX
default "./bios/vmxassist/vmxassist.bin"
help
This is vmxassist image to boot real mode guests on
Intel VMX Platforms
endmenu
menu Multiboot
config MULTIBOOT
bool "Support Multiboot2-compliant boot"
default y
help
If set, it is possible to boot a multiboot2 compliant
kernel directly.
config DEBUG_MULTIBOOT
depends on MULTIBOOT
bool "Enable Multiboot2 debugging in Palacios"
default n
help
Enable Multiboot2 debugging output
endmenu
endmenu
menu "Symbiosis"
config SYMBIOTIC
bool "Enable Symbiotic Functionality"
default n
depends on BOCHSBIOS
help
Enable Symbiotic components of the VMM.
This includes the SymSpy interface.
config SYMCALL
bool "Symbiotic upcalls"
default n
depends on SYMBIOTIC && EXPERIMENTAL
help
Enables the Symbiotic upcall interface
config SWAPBYPASS
bool "SwapBypass"
default n
depends on SYMBIOTIC && SYMCALL && EXPERIMENTAL
help
This enables the SwapBypass architecture
config SWAPBYPASS_TELEMETRY
bool "Enable SwapBypass Telemetry"
default n
depends on TELEMETRY && SWAPBYPASS
help
Enable the telemetry information for the SwapBypass subsystem
menuconfig SYMMOD
bool "Symbiotic Modules"
default n
depends on EXPERIMENTAL && SYMBIOTIC
help
Enable Symbiotic module loading
endmenu
menu "VNET"
config VNET
bool "Enable Vnet in Palacios"
default n
help
Enable the Vnet in Palacios
config DEBUG_VNET
depends on VNET
bool "Enable Vnet Debug in Palacios"
default n
help
Enable the Vnet debug in Palacios
endmenu
source "palacios/src/gears/Kconfig"
menu HVM
config HVM
bool "Support Hybrid Virtual Machines"
depends on MULTIBOOT
default n
help
If set, it is possible to make VMs that are partitioned
(cores, memory, devices, hardware access, etc) into
a part ("the ROS") that supports normal VM operation and
a part ("the HRT") that supports Hybrid Run-Times,
for example Nautilus-based HRTs for parallel languages.
choice
prompt "HVM Magic Upcall Mechanism"
default HVM_UPCALL_MAGIC_GPF
config HVM_UPCALL_MAGIC_GPF
bool "GPF"
help
Upcall using a #GP with a well-known magic error code
config HVM_UPCALL_MAGIC_PF
bool "Page Fault"
help
Upcall using a #PF with a well-known magic address and error code
config HVM_UPCALL_MAGIC_SWINT
bool "Software interrupt"
help
Upcall using a software interrupt with a vector specified by
the VM's configuration
endchoice
config DEBUG_HVM
depends on HVM
bool "Enable HVM debugging in Palacios"
default n
help
Enable HVM debugging output
endmenu