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 21*9ee62c33SSean 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 250ba12d10SAvi Kivity select HAVE_KVM_IRQCHIP 26982ed0deSDavid Woodhouse select HAVE_KVM_PFNCACHE 2717601bfeSMarc Zyngier select HAVE_KVM_DIRTY_RING_TSO 28fc0693d4SMarc Zyngier select HAVE_KVM_DIRTY_RING_ACQ_REL 2987276880SFeng Wu select HAVE_KVM_IRQ_BYPASS 30a725d56aSAlexander Graf select HAVE_KVM_IRQ_ROUTING 318886640dSPaolo Bonzini select HAVE_KVM_READONLY_MEM 32d96c77bdSPaolo Bonzini select VHOST_TASK 33af585b92SGleb Natapov select KVM_ASYNC_PF 3418863bddSAvi Kivity select USER_RETURN_NOTIFIER 3550eb2a3cSAvi Kivity select KVM_MMIO 3663b3f96eSPeter Zijlstra select SCHED_INFO 37f5132b01SGleb Natapov select PERF_EVENTS 382aef6f30SSean Christopherson select GUEST_PERF_EVENTS 3907975ad3SJan Kiszka select HAVE_KVM_MSI 40f2a74347SRaghavendra K T select HAVE_KVM_CPU_RELAX_INTERCEPT 412d5ba19bSMarcelo Tosatti select HAVE_KVM_NO_POLL 4272c3c0feSThomas Gleixner select KVM_XFER_TO_GUEST_WORK 43e108ff2fSPaolo Bonzini select KVM_GENERIC_DIRTYLOG_READ_PROTECT 44ec53500fSAlex Williamson select KVM_VFIO 457d62874fSSergey Senozhatsky select HAVE_KVM_PM_NOTIFIER if PM 46441f7bfaSSean Christopherson select KVM_GENERIC_HARDWARE_ENABLING 476e01b760SPaolo Bonzini select KVM_GENERIC_PRE_FAULT_MEMORY 48ea4290d7SPaolo Bonzini select KVM_GENERIC_PRIVATE_MEM if KVM_SW_PROTECTED_VM 4976d5363cSSean Christopherson select KVM_WERROR if WERROR 50ea4290d7SPaolo Bonzini 51ea4290d7SPaolo Bonziniconfig KVM 52ea4290d7SPaolo Bonzini tristate "Kernel-based Virtual Machine (KVM) support" 531331343aSArnd Bergmann depends on X86_LOCAL_APIC 54a7f7f624SMasahiro Yamada help 55edf88417SAvi Kivity Support hosting fully virtualized guest machines using hardware 56edf88417SAvi Kivity virtualization extensions. You will need a fairly recent 57edf88417SAvi Kivity processor equipped with virtualization extensions. You will also 58edf88417SAvi Kivity need to select one or more of the processor modules below. 59edf88417SAvi Kivity 60edf88417SAvi Kivity This module provides access to the hardware capabilities through 61edf88417SAvi Kivity a character device node named /dev/kvm. 62edf88417SAvi Kivity 63edf88417SAvi Kivity To compile this as a module, choose M here: the module 64edf88417SAvi Kivity will be called kvm. 65edf88417SAvi Kivity 66edf88417SAvi Kivity If unsure, say N. 67edf88417SAvi Kivity 684f337fafSPaolo Bonziniconfig KVM_WERROR 694f337fafSPaolo Bonzini bool "Compile KVM with -Werror" 7075bedc1eSSean Christopherson # Disallow KVM's -Werror if KASAN is enabled, e.g. to guard against 7175bedc1eSSean Christopherson # randomized configs from selecting KVM_WERROR=y, which doesn't play 7275bedc1eSSean Christopherson # nice with KASAN. KASAN builds generates warnings for the default 7375bedc1eSSean Christopherson # FRAME_WARN, i.e. KVM_WERROR=y with KASAN=y requires special tuning. 7475bedc1eSSean Christopherson # Building KVM with -Werror and KASAN is still doable via enabling 7575bedc1eSSean Christopherson # the kernel-wide WERROR=y. 7676d5363cSSean Christopherson depends on KVM && ((EXPERT && !KASAN) || WERROR) 774f337fafSPaolo Bonzini help 78a754acc3SJason A. Donenfeld Add -Werror to the build flags for KVM. 794f337fafSPaolo Bonzini 804f337fafSPaolo Bonzini If in doubt, say "N". 814f337fafSPaolo Bonzini 8289ea60c2SSean Christophersonconfig KVM_SW_PROTECTED_VM 8389ea60c2SSean Christopherson bool "Enable support for KVM software-protected VMs" 8489ea60c2SSean Christopherson depends on EXPERT 8578328801SPaolo Bonzini depends on KVM && X86_64 8689ea60c2SSean Christopherson help 8742269209SSean Christopherson Enable support for KVM software-protected VMs. Currently, software- 8842269209SSean Christopherson protected VMs are purely a development and testing vehicle for 8942269209SSean Christopherson KVM_CREATE_GUEST_MEMFD. Attempting to run a "real" VM workload as a 9042269209SSean Christopherson software-protected VM will fail miserably. 9189ea60c2SSean Christopherson 9289ea60c2SSean Christopherson If unsure, say "N". 9389ea60c2SSean Christopherson 94edf88417SAvi Kivityconfig KVM_INTEL 958f63aaf5SSean Christopherson tristate "KVM for Intel (and compatible) processors support" 968f63aaf5SSean Christopherson depends on KVM && IA32_FEAT_CTL 97a7f7f624SMasahiro Yamada help 988f63aaf5SSean Christopherson Provides support for KVM on processors equipped with Intel's VT 998f63aaf5SSean Christopherson extensions, a.k.a. Virtual Machine Extensions (VMX). 100edf88417SAvi Kivity 10158f8ac27SRobert P. J. Day To compile this as a module, choose M here: the module 10258f8ac27SRobert P. J. Day will be called kvm-intel. 10358f8ac27SRobert P. J. Day 1048131cf5bSIsaku Yamahataconfig KVM_INTEL_PROVE_VE 1058131cf5bSIsaku Yamahata bool "Check that guests do not receive #VE exceptions" 1066af6142eSSean Christopherson depends on KVM_INTEL && EXPERT 1078131cf5bSIsaku Yamahata help 1088131cf5bSIsaku Yamahata Checks that KVM's page table management code will not incorrectly 1098131cf5bSIsaku Yamahata let guests receive a virtualization exception. Virtualization 1108131cf5bSIsaku Yamahata exceptions will be trapped by the hypervisor rather than injected 1118131cf5bSIsaku Yamahata in the guest. 1128131cf5bSIsaku Yamahata 1136af6142eSSean Christopherson Note: some CPUs appear to generate spurious EPT Violations #VEs 1146af6142eSSean Christopherson that trigger KVM's WARN, in particular with eptad=0 and/or nested 1156af6142eSSean Christopherson virtualization. 1166af6142eSSean Christopherson 1178131cf5bSIsaku Yamahata If unsure, say N. 1188131cf5bSIsaku Yamahata 119540745ddSSean Christophersonconfig X86_SGX_KVM 120540745ddSSean Christopherson bool "Software Guard eXtensions (SGX) Virtualization" 121540745ddSSean Christopherson depends on X86_SGX && KVM_INTEL 122540745ddSSean Christopherson help 123540745ddSSean Christopherson 124540745ddSSean Christopherson Enables KVM guests to create SGX enclaves. 125540745ddSSean Christopherson 126540745ddSSean Christopherson This includes support to expose "raw" unreclaimable enclave memory to 127540745ddSSean Christopherson guests via a device node, e.g. /dev/sgx_vepc. 128540745ddSSean Christopherson 129540745ddSSean Christopherson If unsure, say N. 130540745ddSSean Christopherson 131edf88417SAvi Kivityconfig KVM_AMD 132edf88417SAvi Kivity tristate "KVM for AMD processors support" 133554856b6SSean Christopherson depends on KVM && (CPU_SUP_AMD || CPU_SUP_HYGON) 134a7f7f624SMasahiro Yamada help 135edf88417SAvi Kivity Provides support for KVM on AMD processors equipped with the AMD-V 136edf88417SAvi Kivity (SVM) extensions. 137edf88417SAvi Kivity 13858f8ac27SRobert P. J. Day To compile this as a module, choose M here: the module 13958f8ac27SRobert P. J. Day will be called kvm-amd. 14058f8ac27SRobert P. J. Day 1415dd0a57cSBrijesh Singhconfig KVM_AMD_SEV 1425dd0a57cSBrijesh Singh bool "AMD Secure Encrypted Virtualization (SEV) support" 143cd14b018SMasahiro Yamada default y 1445dd0a57cSBrijesh Singh depends on KVM_AMD && X86_64 145d30f370dSJanakarajan Natarajan depends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m) 14654f5f47bSBorislav Petkov (AMD) select ARCH_HAS_CC_PLATFORM 147a8e31983SMichael Roth select KVM_GENERIC_PRIVATE_MEM 148564429a6SPaolo Bonzini select HAVE_KVM_ARCH_GMEM_PREPARE 149564429a6SPaolo Bonzini select HAVE_KVM_ARCH_GMEM_INVALIDATE 150a7f7f624SMasahiro Yamada help 1515fa9f048SVitaly Kuznetsov Provides support for launching encrypted VMs which use Secure 1525fa9f048SVitaly Kuznetsov Encrypted Virtualization (SEV), Secure Encrypted Virtualization with 1535fa9f048SVitaly Kuznetsov Encrypted State (SEV-ES), and Secure Encrypted Virtualization with 1545fa9f048SVitaly Kuznetsov Secure Nested Paging (SEV-SNP) technologies on AMD processors. 1555dd0a57cSBrijesh Singh 1564b8e1b32SPaolo Bonziniconfig KVM_SMM 1574b8e1b32SPaolo Bonzini bool "System Management Mode emulation" 1584b8e1b32SPaolo Bonzini default y 1594b8e1b32SPaolo Bonzini depends on KVM 1604b8e1b32SPaolo Bonzini help 1614b8e1b32SPaolo Bonzini Provides support for KVM to emulate System Management Mode (SMM) 1624b8e1b32SPaolo Bonzini in virtual machines. This can be used by the virtual machine 1634b8e1b32SPaolo Bonzini firmware to implement UEFI secure boot. 1644b8e1b32SPaolo Bonzini 1654b8e1b32SPaolo Bonzini If unsure, say Y. 1664b8e1b32SPaolo Bonzini 167b4f69df0SVitaly Kuznetsovconfig KVM_HYPERV 168b4f69df0SVitaly Kuznetsov bool "Support for Microsoft Hyper-V emulation" 169b4f69df0SVitaly Kuznetsov depends on KVM 170b4f69df0SVitaly Kuznetsov default y 171b4f69df0SVitaly Kuznetsov help 172b4f69df0SVitaly Kuznetsov Provides KVM support for emulating Microsoft Hyper-V. This allows KVM 173b4f69df0SVitaly Kuznetsov to expose a subset of the paravirtualized interfaces defined in the 174b4f69df0SVitaly Kuznetsov Hyper-V Hypervisor Top-Level Functional Specification (TLFS): 175b4f69df0SVitaly Kuznetsov https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs 176b4f69df0SVitaly Kuznetsov These interfaces are required for the correct and performant functioning 177b4f69df0SVitaly Kuznetsov of Windows and Hyper-V guests on KVM. 178b4f69df0SVitaly Kuznetsov 179b4f69df0SVitaly Kuznetsov If unsure, say "Y". 180b4f69df0SVitaly Kuznetsov 181b59b153dSPaolo Bonziniconfig KVM_XEN 182b59b153dSPaolo Bonzini bool "Support for Xen hypercall interface" 183b59b153dSPaolo Bonzini depends on KVM 184b59b153dSPaolo Bonzini help 185b59b153dSPaolo Bonzini Provides KVM support for the hosting Xen HVM guests and 186b59b153dSPaolo Bonzini passing Xen hypercalls to userspace. 187b59b153dSPaolo Bonzini 188b59b153dSPaolo Bonzini If in doubt, say "N". 189b59b153dSPaolo Bonzini 190870d4d4eSSean Christophersonconfig KVM_PROVE_MMU 191870d4d4eSSean Christopherson bool "Prove KVM MMU correctness" 192870d4d4eSSean Christopherson depends on DEBUG_KERNEL 193870d4d4eSSean Christopherson depends on KVM 194870d4d4eSSean Christopherson depends on EXPERT 195870d4d4eSSean Christopherson help 196870d4d4eSSean Christopherson Enables runtime assertions in KVM's MMU that are too costly to enable 197870d4d4eSSean Christopherson in anything remotely resembling a production environment, e.g. this 198870d4d4eSSean Christopherson gates code that verifies a to-be-freed page table doesn't have any 199870d4d4eSSean Christopherson present SPTEs. 200870d4d4eSSean Christopherson 201870d4d4eSSean Christopherson If in doubt, say "N". 202870d4d4eSSean Christopherson 203e9d0c0c4SDavid Stevensconfig KVM_EXTERNAL_WRITE_TRACKING 204e9d0c0c4SDavid Stevens bool 205e9d0c0c4SDavid Stevens 206f10a570bSKyle Meyerconfig KVM_MAX_NR_VCPUS 207f10a570bSKyle Meyer int "Maximum number of vCPUs per KVM guest" 208f10a570bSKyle Meyer depends on KVM 209f10a570bSKyle Meyer range 1024 4096 210f10a570bSKyle Meyer default 4096 if MAXSMP 211f10a570bSKyle Meyer default 1024 212f10a570bSKyle Meyer help 213f10a570bSKyle Meyer Set the maximum number of vCPUs per KVM guest. Larger values will increase 214f10a570bSKyle Meyer the memory footprint of each KVM guest, regardless of how many vCPUs are 215f10a570bSKyle Meyer created for a given VM. 216f10a570bSKyle Meyer 217edf88417SAvi Kivityendif # VIRTUALIZATION 218