1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 2edf88417SAvi Kivity# 3edf88417SAvi Kivity# KVM configuration 4edf88417SAvi Kivity# 5edf88417SAvi Kivity 60ba12d10SAvi Kivitysource "virt/kvm/Kconfig" 75d9b8e30SAvi Kivity 8edf88417SAvi Kivitymenuconfig VIRTUALIZATION 9edf88417SAvi Kivity bool "Virtualization" 10edf88417SAvi Kivity default y 11a7f7f624SMasahiro Yamada help 12edf88417SAvi Kivity Say Y here to get to see options for using your Linux host to run other 13edf88417SAvi Kivity operating systems inside virtual machines (guests). 14edf88417SAvi Kivity This option alone does not add any kernel code. 15edf88417SAvi Kivity 16edf88417SAvi Kivity If you say N, all options in this submenu will be skipped and disabled. 17edf88417SAvi Kivity 18edf88417SAvi Kivityif VIRTUALIZATION 19edf88417SAvi Kivity 20ea4290d7SPaolo Bonziniconfig KVM_X86 219ee62c33SSean Christopherson def_tristate KVM if (KVM_INTEL != n || KVM_AMD != n) 22caadf876SPaolo Bonzini select KVM_COMMON 23f128cf8cSSean Christopherson select KVM_GENERIC_MMU_NOTIFIER 24b9883ee4SSean Christopherson select KVM_ELIDE_TLB_FLUSH_IF_YOUNG 25*b146a9b3SSean Christopherson select KVM_MMU_LOCKLESS_AGING 260ba12d10SAvi Kivity select HAVE_KVM_IRQCHIP 27982ed0deSDavid Woodhouse select HAVE_KVM_PFNCACHE 2817601bfeSMarc Zyngier select HAVE_KVM_DIRTY_RING_TSO 29fc0693d4SMarc Zyngier select HAVE_KVM_DIRTY_RING_ACQ_REL 3087276880SFeng Wu select HAVE_KVM_IRQ_BYPASS 31a725d56aSAlexander Graf select HAVE_KVM_IRQ_ROUTING 328886640dSPaolo Bonzini select HAVE_KVM_READONLY_MEM 33d96c77bdSPaolo Bonzini select VHOST_TASK 34af585b92SGleb Natapov select KVM_ASYNC_PF 3518863bddSAvi Kivity select USER_RETURN_NOTIFIER 3650eb2a3cSAvi Kivity select KVM_MMIO 3763b3f96eSPeter Zijlstra select SCHED_INFO 38f5132b01SGleb Natapov select PERF_EVENTS 392aef6f30SSean Christopherson select GUEST_PERF_EVENTS 4007975ad3SJan Kiszka select HAVE_KVM_MSI 41f2a74347SRaghavendra K T select HAVE_KVM_CPU_RELAX_INTERCEPT 422d5ba19bSMarcelo Tosatti select HAVE_KVM_NO_POLL 4372c3c0feSThomas Gleixner select KVM_XFER_TO_GUEST_WORK 44e108ff2fSPaolo Bonzini select KVM_GENERIC_DIRTYLOG_READ_PROTECT 45ec53500fSAlex Williamson select KVM_VFIO 467d62874fSSergey Senozhatsky select HAVE_KVM_PM_NOTIFIER if PM 47441f7bfaSSean Christopherson select KVM_GENERIC_HARDWARE_ENABLING 486e01b760SPaolo Bonzini select KVM_GENERIC_PRE_FAULT_MEMORY 49ea4290d7SPaolo Bonzini select KVM_GENERIC_PRIVATE_MEM if KVM_SW_PROTECTED_VM 5076d5363cSSean Christopherson select KVM_WERROR if WERROR 51ea4290d7SPaolo Bonzini 52ea4290d7SPaolo Bonziniconfig KVM 53ea4290d7SPaolo Bonzini tristate "Kernel-based Virtual Machine (KVM) support" 541331343aSArnd Bergmann depends on X86_LOCAL_APIC 55a7f7f624SMasahiro Yamada help 56edf88417SAvi Kivity Support hosting fully virtualized guest machines using hardware 57edf88417SAvi Kivity virtualization extensions. You will need a fairly recent 58edf88417SAvi Kivity processor equipped with virtualization extensions. You will also 59edf88417SAvi Kivity need to select one or more of the processor modules below. 60edf88417SAvi Kivity 61edf88417SAvi Kivity This module provides access to the hardware capabilities through 62edf88417SAvi Kivity a character device node named /dev/kvm. 63edf88417SAvi Kivity 64edf88417SAvi Kivity To compile this as a module, choose M here: the module 65edf88417SAvi Kivity will be called kvm. 66edf88417SAvi Kivity 67edf88417SAvi Kivity If unsure, say N. 68edf88417SAvi Kivity 694f337fafSPaolo Bonziniconfig KVM_WERROR 704f337fafSPaolo Bonzini bool "Compile KVM with -Werror" 7175bedc1eSSean Christopherson # Disallow KVM's -Werror if KASAN is enabled, e.g. to guard against 7275bedc1eSSean Christopherson # randomized configs from selecting KVM_WERROR=y, which doesn't play 7375bedc1eSSean Christopherson # nice with KASAN. KASAN builds generates warnings for the default 7475bedc1eSSean Christopherson # FRAME_WARN, i.e. KVM_WERROR=y with KASAN=y requires special tuning. 7575bedc1eSSean Christopherson # Building KVM with -Werror and KASAN is still doable via enabling 7675bedc1eSSean Christopherson # the kernel-wide WERROR=y. 7776d5363cSSean Christopherson depends on KVM && ((EXPERT && !KASAN) || WERROR) 784f337fafSPaolo Bonzini help 79a754acc3SJason A. Donenfeld Add -Werror to the build flags for KVM. 804f337fafSPaolo Bonzini 814f337fafSPaolo Bonzini If in doubt, say "N". 824f337fafSPaolo Bonzini 8389ea60c2SSean Christophersonconfig KVM_SW_PROTECTED_VM 8489ea60c2SSean Christopherson bool "Enable support for KVM software-protected VMs" 8589ea60c2SSean Christopherson depends on EXPERT 8678328801SPaolo Bonzini depends on KVM && X86_64 8789ea60c2SSean Christopherson help 8842269209SSean Christopherson Enable support for KVM software-protected VMs. Currently, software- 8942269209SSean Christopherson protected VMs are purely a development and testing vehicle for 9042269209SSean Christopherson KVM_CREATE_GUEST_MEMFD. Attempting to run a "real" VM workload as a 9142269209SSean Christopherson software-protected VM will fail miserably. 9289ea60c2SSean Christopherson 9389ea60c2SSean Christopherson If unsure, say "N". 9489ea60c2SSean Christopherson 95edf88417SAvi Kivityconfig KVM_INTEL 968f63aaf5SSean Christopherson tristate "KVM for Intel (and compatible) processors support" 978f63aaf5SSean Christopherson depends on KVM && IA32_FEAT_CTL 98a7f7f624SMasahiro Yamada help 998f63aaf5SSean Christopherson Provides support for KVM on processors equipped with Intel's VT 1008f63aaf5SSean Christopherson extensions, a.k.a. Virtual Machine Extensions (VMX). 101edf88417SAvi Kivity 10258f8ac27SRobert P. J. Day To compile this as a module, choose M here: the module 10358f8ac27SRobert P. J. Day will be called kvm-intel. 10458f8ac27SRobert P. J. Day 1058131cf5bSIsaku Yamahataconfig KVM_INTEL_PROVE_VE 1068131cf5bSIsaku Yamahata bool "Check that guests do not receive #VE exceptions" 1076af6142eSSean Christopherson depends on KVM_INTEL && EXPERT 1088131cf5bSIsaku Yamahata help 1098131cf5bSIsaku Yamahata Checks that KVM's page table management code will not incorrectly 1108131cf5bSIsaku Yamahata let guests receive a virtualization exception. Virtualization 1118131cf5bSIsaku Yamahata exceptions will be trapped by the hypervisor rather than injected 1128131cf5bSIsaku Yamahata in the guest. 1138131cf5bSIsaku Yamahata 1146af6142eSSean Christopherson Note: some CPUs appear to generate spurious EPT Violations #VEs 1156af6142eSSean Christopherson that trigger KVM's WARN, in particular with eptad=0 and/or nested 1166af6142eSSean Christopherson virtualization. 1176af6142eSSean Christopherson 1188131cf5bSIsaku Yamahata If unsure, say N. 1198131cf5bSIsaku Yamahata 120540745ddSSean Christophersonconfig X86_SGX_KVM 121540745ddSSean Christopherson bool "Software Guard eXtensions (SGX) Virtualization" 122540745ddSSean Christopherson depends on X86_SGX && KVM_INTEL 123540745ddSSean Christopherson help 124540745ddSSean Christopherson 125540745ddSSean Christopherson Enables KVM guests to create SGX enclaves. 126540745ddSSean Christopherson 127540745ddSSean Christopherson This includes support to expose "raw" unreclaimable enclave memory to 128540745ddSSean Christopherson guests via a device node, e.g. /dev/sgx_vepc. 129540745ddSSean Christopherson 130540745ddSSean Christopherson If unsure, say N. 131540745ddSSean Christopherson 132edf88417SAvi Kivityconfig KVM_AMD 133edf88417SAvi Kivity tristate "KVM for AMD processors support" 134554856b6SSean Christopherson depends on KVM && (CPU_SUP_AMD || CPU_SUP_HYGON) 135a7f7f624SMasahiro Yamada help 136edf88417SAvi Kivity Provides support for KVM on AMD processors equipped with the AMD-V 137edf88417SAvi Kivity (SVM) extensions. 138edf88417SAvi Kivity 13958f8ac27SRobert P. J. Day To compile this as a module, choose M here: the module 14058f8ac27SRobert P. J. Day will be called kvm-amd. 14158f8ac27SRobert P. J. Day 1425dd0a57cSBrijesh Singhconfig KVM_AMD_SEV 1435dd0a57cSBrijesh Singh bool "AMD Secure Encrypted Virtualization (SEV) support" 144cd14b018SMasahiro Yamada default y 1455dd0a57cSBrijesh Singh depends on KVM_AMD && X86_64 146d30f370dSJanakarajan Natarajan depends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m) 14754f5f47bSBorislav Petkov (AMD) select ARCH_HAS_CC_PLATFORM 148a8e31983SMichael Roth select KVM_GENERIC_PRIVATE_MEM 149564429a6SPaolo Bonzini select HAVE_KVM_ARCH_GMEM_PREPARE 150564429a6SPaolo Bonzini select HAVE_KVM_ARCH_GMEM_INVALIDATE 151a7f7f624SMasahiro Yamada help 1525fa9f048SVitaly Kuznetsov Provides support for launching encrypted VMs which use Secure 1535fa9f048SVitaly Kuznetsov Encrypted Virtualization (SEV), Secure Encrypted Virtualization with 1545fa9f048SVitaly Kuznetsov Encrypted State (SEV-ES), and Secure Encrypted Virtualization with 1555fa9f048SVitaly Kuznetsov Secure Nested Paging (SEV-SNP) technologies on AMD processors. 1565dd0a57cSBrijesh Singh 1574b8e1b32SPaolo Bonziniconfig KVM_SMM 1584b8e1b32SPaolo Bonzini bool "System Management Mode emulation" 1594b8e1b32SPaolo Bonzini default y 1604b8e1b32SPaolo Bonzini depends on KVM 1614b8e1b32SPaolo Bonzini help 1624b8e1b32SPaolo Bonzini Provides support for KVM to emulate System Management Mode (SMM) 1634b8e1b32SPaolo Bonzini in virtual machines. This can be used by the virtual machine 1644b8e1b32SPaolo Bonzini firmware to implement UEFI secure boot. 1654b8e1b32SPaolo Bonzini 1664b8e1b32SPaolo Bonzini If unsure, say Y. 1674b8e1b32SPaolo Bonzini 168b4f69df0SVitaly Kuznetsovconfig KVM_HYPERV 169b4f69df0SVitaly Kuznetsov bool "Support for Microsoft Hyper-V emulation" 170b4f69df0SVitaly Kuznetsov depends on KVM 171b4f69df0SVitaly Kuznetsov default y 172b4f69df0SVitaly Kuznetsov help 173b4f69df0SVitaly Kuznetsov Provides KVM support for emulating Microsoft Hyper-V. This allows KVM 174b4f69df0SVitaly Kuznetsov to expose a subset of the paravirtualized interfaces defined in the 175b4f69df0SVitaly Kuznetsov Hyper-V Hypervisor Top-Level Functional Specification (TLFS): 176b4f69df0SVitaly Kuznetsov https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs 177b4f69df0SVitaly Kuznetsov These interfaces are required for the correct and performant functioning 178b4f69df0SVitaly Kuznetsov of Windows and Hyper-V guests on KVM. 179b4f69df0SVitaly Kuznetsov 180b4f69df0SVitaly Kuznetsov If unsure, say "Y". 181b4f69df0SVitaly Kuznetsov 182b59b153dSPaolo Bonziniconfig KVM_XEN 183b59b153dSPaolo Bonzini bool "Support for Xen hypercall interface" 184b59b153dSPaolo Bonzini depends on KVM 185b59b153dSPaolo Bonzini help 186b59b153dSPaolo Bonzini Provides KVM support for the hosting Xen HVM guests and 187b59b153dSPaolo Bonzini passing Xen hypercalls to userspace. 188b59b153dSPaolo Bonzini 189b59b153dSPaolo Bonzini If in doubt, say "N". 190b59b153dSPaolo Bonzini 191870d4d4eSSean Christophersonconfig KVM_PROVE_MMU 192870d4d4eSSean Christopherson bool "Prove KVM MMU correctness" 193870d4d4eSSean Christopherson depends on DEBUG_KERNEL 194870d4d4eSSean Christopherson depends on KVM 195870d4d4eSSean Christopherson depends on EXPERT 196870d4d4eSSean Christopherson help 197870d4d4eSSean Christopherson Enables runtime assertions in KVM's MMU that are too costly to enable 198870d4d4eSSean Christopherson in anything remotely resembling a production environment, e.g. this 199870d4d4eSSean Christopherson gates code that verifies a to-be-freed page table doesn't have any 200870d4d4eSSean Christopherson present SPTEs. 201870d4d4eSSean Christopherson 202870d4d4eSSean Christopherson If in doubt, say "N". 203870d4d4eSSean Christopherson 204e9d0c0c4SDavid Stevensconfig KVM_EXTERNAL_WRITE_TRACKING 205e9d0c0c4SDavid Stevens bool 206e9d0c0c4SDavid Stevens 207f10a570bSKyle Meyerconfig KVM_MAX_NR_VCPUS 208f10a570bSKyle Meyer int "Maximum number of vCPUs per KVM guest" 209f10a570bSKyle Meyer depends on KVM 210f10a570bSKyle Meyer range 1024 4096 211f10a570bSKyle Meyer default 4096 if MAXSMP 212f10a570bSKyle Meyer default 1024 213f10a570bSKyle Meyer help 214f10a570bSKyle Meyer Set the maximum number of vCPUs per KVM guest. Larger values will increase 215f10a570bSKyle Meyer the memory footprint of each KVM guest, regardless of how many vCPUs are 216f10a570bSKyle Meyer created for a given VM. 217f10a570bSKyle Meyer 218edf88417SAvi Kivityendif # VIRTUALIZATION 219