1
2menu "Common Features"
3
4config COMPAT
5	bool
6	help
7	  32-bit interface support on 64-bit Xen which is used for both
8	  HVM and PV guests. HVMLoader makes 32-bit hypercalls irrespective
9	  of the destination runmode of the guest.
10
11config CORE_PARKING
12	bool
13
14config HAS_ALTERNATIVE
15	bool
16
17config HAS_DEVICE_TREE
18	bool
19
20config HAS_EX_TABLE
21	bool
22
23config HAS_MEM_ACCESS
24	bool
25
26config HAS_MEM_PAGING
27	bool
28
29config HAS_MEM_SHARING
30	bool
31
32config HAS_PDX
33	bool
34
35config HAS_UBSAN
36	bool
37
38config HAS_KEXEC
39	bool
40
41config HAS_GDBSX
42	bool
43
44config HAS_IOPORTS
45	bool
46
47config HAS_BUILD_ID
48	string
49	option env="XEN_HAS_BUILD_ID"
50
51config HAS_CHECKPOLICY
52	string
53	option env="XEN_HAS_CHECKPOLICY"
54
55config KEXEC
56	bool "kexec support"
57	default y
58	depends on HAS_KEXEC
59	---help---
60	  Allows a running Xen hypervisor to be replaced with another OS
61	  without rebooting. This is primarily used to execute a crash
62	  environment to collect information on a Xen hypervisor or dom0 crash.
63
64	  If unsure, say Y.
65
66config TMEM
67	def_bool y
68	prompt "Transcendent Memory Support" if EXPERT = "y"
69	---help---
70	  Transcendent memory allows PV-aware guests to collaborate on memory
71	  usage. Guests can 'swap' their memory to the hypervisor or have an
72	  collective pool of memory shared across guests. The end result is
73	  less memory usage by guests allowing higher guest density.
74
75	  You also have to enable it on the Xen commandline by using tmem=1
76
77	  If unsure, say Y.
78
79config XENOPROF
80	def_bool y
81	prompt "Xen Oprofile Support" if EXPERT = "y"
82	depends on X86
83	---help---
84	  Xen OProfile (Xenoprof) is a system-wide profiler for Xen virtual
85	  machine environments, capable of profiling the Xen virtual machine
86	  monitor, multiple Linux guest operating systems, and applications
87	  running on them.
88
89	  If unsure, say Y.
90
91config XSM
92	bool "Xen Security Modules support"
93	default n
94	---help---
95	  Enables the security framework known as Xen Security Modules which
96	  allows administrators fine-grained control over a Xen domain and
97	  its capabilities by defining permissible interactions between domains,
98	  the hypervisor itself, and related resources such as memory and
99	  devices.
100
101	  If unsure, say N.
102
103config FLASK
104	def_bool y
105	prompt "FLux Advanced Security Kernel support" if EXPERT = "y"
106	depends on XSM
107	---help---
108	  Enables FLASK (FLux Advanced Security Kernel) as the access control
109	  mechanism used by the XSM framework.  This provides a mandatory access
110	  control framework by which security enforcement, isolation, and
111	  auditing can be achieved with fine granular control via a security
112	  policy.
113
114	  If unsure, say Y.
115
116config FLASK_AVC_STATS
117	def_bool y
118	prompt "Maintain statistics on the FLASK access vector cache" if EXPERT = "y"
119	depends on FLASK
120	---help---
121	  Maintain counters on the access vector cache that can be viewed using
122	  the FLASK_AVC_CACHESTATS sub-op of the xsm_op hypercall.  Disabling
123	  this will save a tiny amount of memory and time to update the stats.
124
125	  If unsure, say Y.
126
127config XSM_POLICY
128	bool "Compile Xen with a built-in security policy"
129	default y if HAS_CHECKPOLICY = "y"
130	depends on XSM
131	---help---
132	  This includes a default XSM policy in the hypervisor so that the
133	  bootloader does not need to load a policy to get sane behavior from an
134	  XSM-enabled hypervisor.  If this is disabled, a policy must be
135	  provided by the bootloader or by Domain 0.  Even if this is enabled, a
136	  policy provided by the bootloader will override it.
137
138	  This requires that the SELinux policy compiler (checkpolicy) be
139	  available when compiling the hypervisor.
140
141	  If unsure, say Y.
142
143config LATE_HWDOM
144	bool "Dedicated hardware domain"
145	default n
146	depends on XSM && X86
147	---help---
148	  Allows the creation of a dedicated hardware domain distinct from
149	  domain 0 that manages devices without needing access to other
150	  privileged functionality such as the ability to manage domains.
151	  This requires that the actual domain 0 be a stub domain that
152	  constructs the actual hardware domain instead of initializing the
153	  hardware itself.  Because the hardware domain needs access to
154	  hypercalls not available to unprivileged guests, an XSM policy
155	  is required to properly define the privilege of these domains.
156
157	  This feature does nothing if the "hardware_dom" boot parameter is
158	  not present.  If this feature is being used for security, it should
159	  be combined with an IOMMU in strict mode.
160
161	  If unsure, say N.
162
163menu "Schedulers"
164	visible if EXPERT = "y"
165
166config SCHED_CREDIT
167	def_bool y
168	---help---
169	  The traditional credit scheduler is a general purpose scheduler.
170
171config SCHED_CREDIT2
172	bool "Credit2 scheduler support"
173	default y
174	---help---
175	  The credit2 scheduler is a general purpose scheduler that is
176	  optimized for lower latency and higher VM density.
177
178config SCHED_RTDS
179	bool "RTDS scheduler support (EXPERIMENTAL)"
180	default y
181	---help---
182	  The RTDS scheduler is a soft and firm real-time scheduler for
183	  multicore, targeted for embedded, automotive, graphics and gaming
184	  in the cloud, and general low-latency workloads.
185
186config SCHED_ARINC653
187	bool "ARINC653 scheduler support (EXPERIMENTAL)"
188	default y
189	---help---
190	  The ARINC653 scheduler is a hard real-time scheduler for single
191	  cores, targeted for avionics, drones, and medical devices.
192
193config SCHED_NULL
194	bool "Null scheduler support (EXPERIMENTAL)"
195	default y
196	---help---
197	  The null scheduler is a static, zero overhead scheduler,
198	  for when there always are less vCPUs than pCPUs, typically
199	  in embedded or HPC scenarios.
200
201choice
202	prompt "Default Scheduler?"
203	default SCHED_CREDIT_DEFAULT
204
205	config SCHED_CREDIT_DEFAULT
206		bool "Credit Scheduler" if SCHED_CREDIT
207	config SCHED_CREDIT2_DEFAULT
208		bool "Credit2 Scheduler" if SCHED_CREDIT2
209	config SCHED_RTDS_DEFAULT
210		bool "RT Scheduler" if SCHED_RTDS
211	config SCHED_ARINC653_DEFAULT
212		bool "ARINC653 Scheduler" if SCHED_ARINC653
213	config SCHED_NULL_DEFAULT
214		bool "Null Scheduler" if SCHED_NULL
215endchoice
216
217config SCHED_DEFAULT
218	string
219	default "credit" if SCHED_CREDIT_DEFAULT
220	default "credit2" if SCHED_CREDIT2_DEFAULT
221	default "rtds" if SCHED_RTDS_DEFAULT
222	default "arinc653" if SCHED_ARINC653_DEFAULT
223	default "null" if SCHED_NULL_DEFAULT
224	default "credit"
225
226endmenu
227
228config CRYPTO
229	bool
230
231config LIVEPATCH
232	bool "Live patching support"
233	default X86
234	depends on HAS_BUILD_ID = "y"
235	---help---
236	  Allows a running Xen hypervisor to be dynamically patched using
237	  binary patches without rebooting. This is primarily used to binarily
238	  patch in the field an hypervisor with XSA fixes.
239
240	  If unsure, say Y.
241
242config FAST_SYMBOL_LOOKUP
243	bool "Fast symbol lookup (bigger binary)"
244	default y
245	depends on LIVEPATCH
246	---help---
247	  When searching for symbol addresses we can use the built-in system
248	  that is optimized for searching symbols using addresses as the key.
249	  However using it for the inverse (find address using the symbol name)
250	  it is slow. This extra data and code (~55kB) speeds up the search.
251	  The only user of this is Live patching.
252
253	  If unsure, say Y.
254
255config SUPPRESS_DUPLICATE_SYMBOL_WARNINGS
256	bool "Suppress duplicate symbol warnings" if !LIVEPATCH
257	default y if !LIVEPATCH
258	---help---
259	  Multiple symbols with the same name aren't generally a problem
260	  unless Live patching is to be used, so these warnings can be
261	  suppressed by enabling this option.  Certain other options (known
262	  to produce many duplicate names) may select this to avoid the
263	  build becoming overly verbose.
264
265config CMDLINE
266	string "Built-in hypervisor command string" if EXPERT = "y"
267	default ""
268	---help---
269	  Enter arguments here that should be compiled into the hypervisor
270	  image and used at boot time. When the system boots, this string
271	  will be parsed prior to the bootloader command line. So if a
272	  non-cumulative option is set both in this string and in the
273	  bootloader command line, only the latter one will take effect.
274
275config CMDLINE_OVERRIDE
276	bool "Built-in command line overrides bootloader arguments"
277	default n
278	depends on CMDLINE != ""
279	---help---
280	  Set this option to 'Y' to have the hypervisor ignore the bootloader
281	  command line, and use ONLY the built-in command line.
282
283	  This is used to work around broken bootloaders. This should
284	  be set to 'N' under normal conditions.
285endmenu
286