Merge tag 'devicetree-for-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/robh...
[sfrench/cifs-2.6.git] / arch / x86 / kvm / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 #
3 # KVM configuration
4 #
5
6 source "virt/kvm/Kconfig"
7
8 menuconfig VIRTUALIZATION
9         bool "Virtualization"
10         depends on HAVE_KVM || X86
11         default y
12         help
13           Say Y here to get to see options for using your Linux host to run other
14           operating systems inside virtual machines (guests).
15           This option alone does not add any kernel code.
16
17           If you say N, all options in this submenu will be skipped and disabled.
18
19 if VIRTUALIZATION
20
21 config KVM
22         tristate "Kernel-based Virtual Machine (KVM) support"
23         depends on HAVE_KVM
24         depends on HIGH_RES_TIMERS
25         depends on X86_LOCAL_APIC
26         select KVM_COMMON
27         select KVM_GENERIC_MMU_NOTIFIER
28         select HAVE_KVM_IRQCHIP
29         select HAVE_KVM_PFNCACHE
30         select HAVE_KVM_DIRTY_RING_TSO
31         select HAVE_KVM_DIRTY_RING_ACQ_REL
32         select IRQ_BYPASS_MANAGER
33         select HAVE_KVM_IRQ_BYPASS
34         select HAVE_KVM_IRQ_ROUTING
35         select KVM_ASYNC_PF
36         select USER_RETURN_NOTIFIER
37         select KVM_MMIO
38         select SCHED_INFO
39         select PERF_EVENTS
40         select GUEST_PERF_EVENTS
41         select HAVE_KVM_MSI
42         select HAVE_KVM_CPU_RELAX_INTERCEPT
43         select HAVE_KVM_NO_POLL
44         select KVM_XFER_TO_GUEST_WORK
45         select KVM_GENERIC_DIRTYLOG_READ_PROTECT
46         select KVM_VFIO
47         select HAVE_KVM_PM_NOTIFIER if PM
48         select KVM_GENERIC_HARDWARE_ENABLING
49         help
50           Support hosting fully virtualized guest machines using hardware
51           virtualization extensions.  You will need a fairly recent
52           processor equipped with virtualization extensions. You will also
53           need to select one or more of the processor modules below.
54
55           This module provides access to the hardware capabilities through
56           a character device node named /dev/kvm.
57
58           To compile this as a module, choose M here: the module
59           will be called kvm.
60
61           If unsure, say N.
62
63 config KVM_WERROR
64         bool "Compile KVM with -Werror"
65         # Disallow KVM's -Werror if KASAN is enabled, e.g. to guard against
66         # randomized configs from selecting KVM_WERROR=y, which doesn't play
67         # nice with KASAN.  KASAN builds generates warnings for the default
68         # FRAME_WARN, i.e. KVM_WERROR=y with KASAN=y requires special tuning.
69         # Building KVM with -Werror and KASAN is still doable via enabling
70         # the kernel-wide WERROR=y.
71         depends on KVM && EXPERT && !KASAN
72         help
73           Add -Werror to the build flags for KVM.
74
75           If in doubt, say "N".
76
77 config KVM_SW_PROTECTED_VM
78         bool "Enable support for KVM software-protected VMs"
79         depends on EXPERT
80         depends on KVM && X86_64
81         select KVM_GENERIC_PRIVATE_MEM
82         help
83           Enable support for KVM software-protected VMs.  Currently, software-
84           protected VMs are purely a development and testing vehicle for
85           KVM_CREATE_GUEST_MEMFD.  Attempting to run a "real" VM workload as a
86           software-protected VM will fail miserably.
87
88           If unsure, say "N".
89
90 config KVM_INTEL
91         tristate "KVM for Intel (and compatible) processors support"
92         depends on KVM && IA32_FEAT_CTL
93         help
94           Provides support for KVM on processors equipped with Intel's VT
95           extensions, a.k.a. Virtual Machine Extensions (VMX).
96
97           To compile this as a module, choose M here: the module
98           will be called kvm-intel.
99
100 config X86_SGX_KVM
101         bool "Software Guard eXtensions (SGX) Virtualization"
102         depends on X86_SGX && KVM_INTEL
103         help
104
105           Enables KVM guests to create SGX enclaves.
106
107           This includes support to expose "raw" unreclaimable enclave memory to
108           guests via a device node, e.g. /dev/sgx_vepc.
109
110           If unsure, say N.
111
112 config KVM_AMD
113         tristate "KVM for AMD processors support"
114         depends on KVM && (CPU_SUP_AMD || CPU_SUP_HYGON)
115         help
116           Provides support for KVM on AMD processors equipped with the AMD-V
117           (SVM) extensions.
118
119           To compile this as a module, choose M here: the module
120           will be called kvm-amd.
121
122 config KVM_AMD_SEV
123         def_bool y
124         bool "AMD Secure Encrypted Virtualization (SEV) support"
125         depends on KVM_AMD && X86_64
126         depends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m)
127         help
128           Provides support for launching Encrypted VMs (SEV) and Encrypted VMs
129           with Encrypted State (SEV-ES) on AMD processors.
130
131 config KVM_SMM
132         bool "System Management Mode emulation"
133         default y
134         depends on KVM
135         help
136           Provides support for KVM to emulate System Management Mode (SMM)
137           in virtual machines.  This can be used by the virtual machine
138           firmware to implement UEFI secure boot.
139
140           If unsure, say Y.
141
142 config KVM_HYPERV
143         bool "Support for Microsoft Hyper-V emulation"
144         depends on KVM
145         default y
146         help
147           Provides KVM support for emulating Microsoft Hyper-V.  This allows KVM
148           to expose a subset of the paravirtualized interfaces defined in the
149           Hyper-V Hypervisor Top-Level Functional Specification (TLFS):
150           https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs
151           These interfaces are required for the correct and performant functioning
152           of Windows and Hyper-V guests on KVM.
153
154           If unsure, say "Y".
155
156 config KVM_XEN
157         bool "Support for Xen hypercall interface"
158         depends on KVM
159         help
160           Provides KVM support for the hosting Xen HVM guests and
161           passing Xen hypercalls to userspace.
162
163           If in doubt, say "N".
164
165 config KVM_PROVE_MMU
166         bool "Prove KVM MMU correctness"
167         depends on DEBUG_KERNEL
168         depends on KVM
169         depends on EXPERT
170         help
171           Enables runtime assertions in KVM's MMU that are too costly to enable
172           in anything remotely resembling a production environment, e.g. this
173           gates code that verifies a to-be-freed page table doesn't have any
174           present SPTEs.
175
176           If in doubt, say "N".
177
178 config KVM_EXTERNAL_WRITE_TRACKING
179         bool
180
181 config KVM_MAX_NR_VCPUS
182         int "Maximum number of vCPUs per KVM guest"
183         depends on KVM
184         range 1024 4096
185         default 4096 if MAXSMP
186         default 1024
187         help
188           Set the maximum number of vCPUs per KVM guest. Larger values will increase
189           the memory footprint of each KVM guest, regardless of how many vCPUs are
190           created for a given VM.
191
192 endif # VIRTUALIZATION