summaryrefslogtreecommitdiff
path: root/xen/arch/x86/Kconfig
blob: 24868aa6ad64909b455dadcad58a25520ff37162 (plain)
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
config X86_64
	def_bool y

config X86
	def_bool y
	select ACPI
	select ACPI_LEGACY_TABLES_LOOKUP
	select ARCH_SUPPORTS_INT128
	select COMPAT
	select CORE_PARKING
	select HAS_ALTERNATIVE
	select HAS_CPUFREQ
	select HAS_EHCI
	select HAS_EX_TABLE
	select HAS_FAST_MULTIPLY
	select HAS_IOPORTS
	select HAS_KEXEC
	select MEM_ACCESS_ALWAYS_ON
	select HAS_MEM_PAGING
	select HAS_NS16550
	select HAS_PASSTHROUGH
	select HAS_PCI
	select HAS_PDX
	select HAS_SCHED_GRANULARITY
	select HAS_UBSAN
	select HAS_VPCI if !PV_SHIM_EXCLUSIVE && HVM
	select NEEDS_LIBELF
	select NUMA

config ARCH_DEFCONFIG
	string
	default "arch/x86/configs/x86_64_defconfig"

config INDIRECT_THUNK
	def_bool $(cc-option,-mindirect-branch-register)

config HAS_AS_CET_SS
	# binutils >= 2.29 or LLVM >= 6
	def_bool $(as-instr,wrssq %rax$(comma)0;setssbsy)

menu "Architecture Features"

source "arch/Kconfig"

config PV
	def_bool y
	prompt "PV support"
	---help---
	  Interfaces to support PV domains. These require guest kernel support
	  to run as a PV guest, but don't require any specific hardware support.

	  This option is needed if you want to run PV domains.

	  If unsure, say Y.

config PV32
	bool "Support for 32bit PV guests"
	depends on PV
	default y
	---help---
	  The 32bit PV ABI uses Ring1, an area of the x86 architecture which
	  was deprecated and mostly removed in the AMD64 spec.  As a result,
	  it occasionally conflicts with newer x86 hardware features, causing
	  overheads for Xen to maintain backwards compatibility.

	  People may wish to disable 32bit PV guests for attack surface
	  reduction, or performance reasons.  Backwards compatibility can be
	  provided via the PV Shim mechanism.

	  If unsure, say Y.

config PV_LINEAR_PT
       bool "Support for PV linear pagetables"
       depends on PV
       default y
       ---help---
         Linear pagetables (also called "recursive pagetables") refers
         to the practice of a guest operating system having pagetable
         entries pointing to other pagetables of the same level (i.e.,
         allowing L2 PTEs to point to other L2 pages).  Some operating
         systems use it as a simple way to consistently map the current
         process's pagetables into its own virtual address space.

         Linux and MiniOS don't use this technique.  NetBSD and Novell
         Netware do; there may be other custom operating systems which
         do.  If you're certain you don't plan on having PV guests
         which use this feature, turning it off can reduce the attack
         surface.

         If unsure, say Y.

config HVM
	def_bool !PV_SHIM_EXCLUSIVE
	prompt "HVM support"
	---help---
	  Interfaces to support HVM domains.  HVM domains require hardware
	  virtualisation extensions (e.g. Intel VT-x, AMD SVM), but can boot
	  guests which have no specific Xen knowledge.

	  This option is needed if you want to run HVM or PVH domains.

	  If unsure, say Y.

config XEN_SHSTK
	bool "Supervisor Shadow Stacks"
	depends on HAS_AS_CET_SS && EXPERT
	default y
	---help---
	  Control-flow Enforcement Technology (CET) is a set of features in
	  hardware designed to combat Return-oriented Programming (ROP, also
	  call/jump COP/JOP) attacks.  Shadow Stacks are one CET feature
	  designed to provide return address protection.

	  This option arranges for Xen to use CET-SS for its own protection.
	  When CET-SS is active, 32bit PV guests cannot be used.  Backwards
	  compatiblity can be provided via the PV Shim mechanism.

config SHADOW_PAGING
	bool "Shadow Paging"
	default !PV_SHIM_EXCLUSIVE
	---help---

          Shadow paging is a software alternative to hardware paging support
          (Intel EPT, AMD NPT).

          It is required for:
            * Running HVM guests on hardware lacking hardware paging support
              (First-generation Intel VT-x or AMD SVM).
            * Live migration of PV guests.
            * L1TF sidechannel mitigation for PV guests.

          Under a small number of specific workloads, shadow paging may be
          deliberately used as a performance optimisation.

          If unsure, say Y.

config BIGMEM
	bool "big memory support"
	default n
	---help---
	  Allows Xen to support up to 123Tb of memory.

	  This requires enlarging struct page_info as well as shrinking
	  the always accessible direct mapped memory range.

	  If unsure, say N.

config HVM_FEP
	bool "HVM Forced Emulation Prefix support" if EXPERT
	default DEBUG
	depends on HVM
	---help---

	  Compiles in a feature that allows HVM guest to arbitrarily
	  exercise the instruction emulator.

	  This feature can only be enabled during boot time with
	  appropriate hypervisor command line option. Please read
	  hypervisor command line documentation before trying to use
	  this feature.

	  This is strictly for testing purposes, and not appropriate
	  for use in production.

	  If unsure, say N.

config TBOOT
	bool "Xen tboot support" if EXPERT
	default y if !PV_SHIM_EXCLUSIVE
	select CRYPTO
	---help---
	  Allows support for Trusted Boot using the Intel(R) Trusted Execution
	  Technology (TXT)

	  If unsure, say Y.

choice
	prompt "Alignment of Xen image"
	default XEN_ALIGN_2M if PV_SHIM_EXCLUSIVE
	default XEN_ALIGN_DEFAULT
	---help---
	  Specify alignment for Xen image.

	  If unsure, choose "default".

config XEN_ALIGN_DEFAULT
	bool "Default alignment"
	---help---
	  Pick alignment according to build variants.

	  For EFI build the default alignment is 2M. For ELF build
	  the default alignment is 4K due to syslinux failing to handle
	  the increment of image size induced by 2M alignment.

config XEN_ALIGN_2M
	bool "2M alignment"

endchoice

config GUEST
	bool

config XEN_GUEST
	bool "Xen Guest"
	select GUEST
	---help---
	  Support for Xen detecting when it is running under Xen.

	  If unsure, say N.

config PVH_GUEST
	def_bool y
	prompt "PVH Guest"
	depends on XEN_GUEST
	---help---
	  Support booting using the PVH ABI.

	  If unsure, say Y.

config PV_SHIM
	def_bool y
	prompt "PV Shim"
	depends on PV && XEN_GUEST
	---help---
	  Build Xen with a mode which acts as a shim to allow PV guest to run
	  in an HVM/PVH container. This mode can only be enabled with command
	  line option.

	  If unsure, say Y.

config PV_SHIM_EXCLUSIVE
	bool "PV Shim Exclusive"
	depends on PV_SHIM
	---help---
	  Build Xen in a way which unconditionally assumes PV_SHIM mode.  This
	  option is only intended for use when building a dedicated PV Shim
	  firmware, and will not function correctly in other scenarios.

	  If unsure, say N.

if !PV_SHIM_EXCLUSIVE

config HYPERV_GUEST
	bool "Hyper-V Guest"
	select GUEST
	---help---
	  Support for Xen detecting when it is running under Hyper-V.

	  If unsure, say N.

endif

config MEM_SHARING
	bool "Xen memory sharing support" if EXPERT
	depends on HVM

endmenu

source "common/Kconfig"

source "drivers/Kconfig"