1# SPDX-License-Identifier: GPL-2.0 2# 3# KVM configuration 4# 5 6source "virt/kvm/Kconfig" 7 8menuconfig VIRTUALIZATION 9 bool "Virtualization" 10 help 11 Say Y here to get to see options for using your Linux host to run 12 other operating systems inside virtual machines (guests). 13 This option alone does not add any kernel code. 14 15 If you say N, all options in this submenu will be skipped and 16 disabled. 17 18if VIRTUALIZATION 19 20config KVM 21 bool 22 select PREEMPT_NOTIFIERS 23 select HAVE_KVM_EVENTFD 24 select HAVE_KVM_VCPU_ASYNC_IOCTL 25 select SRCU 26 select KVM_VFIO 27 select IRQ_BYPASS_MANAGER 28 select HAVE_KVM_IRQ_BYPASS 29 30config KVM_BOOK3S_HANDLER 31 bool 32 33config KVM_BOOK3S_32_HANDLER 34 bool 35 select KVM_BOOK3S_HANDLER 36 select KVM_MMIO 37 38config KVM_BOOK3S_64_HANDLER 39 bool 40 select KVM_BOOK3S_HANDLER 41 42config KVM_BOOK3S_PR_POSSIBLE 43 bool 44 select KVM_MMIO 45 select MMU_NOTIFIER 46 47config KVM_BOOK3S_HV_POSSIBLE 48 bool 49 50config KVM_BOOK3S_32 51 tristate "KVM support for PowerPC book3s_32 processors" 52 depends on PPC_BOOK3S_32 && !SMP && !PTE_64BIT 53 select KVM 54 select KVM_BOOK3S_32_HANDLER 55 select KVM_BOOK3S_PR_POSSIBLE 56 select PPC_FPU 57 help 58 Support running unmodified book3s_32 guest kernels 59 in virtual machines on book3s_32 host processors. 60 61 This module provides access to the hardware capabilities through 62 a character device node named /dev/kvm. 63 64 If unsure, say N. 65 66config KVM_BOOK3S_64 67 tristate "KVM support for PowerPC book3s_64 processors" 68 depends on PPC_BOOK3S_64 69 select KVM_BOOK3S_64_HANDLER 70 select KVM 71 select KVM_BOOK3S_PR_POSSIBLE if !KVM_BOOK3S_HV_POSSIBLE 72 select SPAPR_TCE_IOMMU if IOMMU_SUPPORT && (PPC_PSERIES || PPC_POWERNV) 73 help 74 Support running unmodified book3s_64 and book3s_32 guest kernels 75 in virtual machines on book3s_64 host processors. 76 77 This module provides access to the hardware capabilities through 78 a character device node named /dev/kvm. 79 80 If unsure, say N. 81 82config KVM_BOOK3S_64_HV 83 tristate "KVM for POWER7 and later using hypervisor mode in host" 84 depends on KVM_BOOK3S_64 && PPC_POWERNV 85 select KVM_BOOK3S_HV_POSSIBLE 86 select MMU_NOTIFIER 87 select CMA 88 help 89 Support running unmodified book3s_64 guest kernels in 90 virtual machines on POWER7 and newer processors that have 91 hypervisor mode available to the host. 92 93 If you say Y here, KVM will use the hardware virtualization 94 facilities of POWER7 (and later) processors, meaning that 95 guest operating systems will run at full hardware speed 96 using supervisor and user modes. However, this also means 97 that KVM is not usable under PowerVM (pHyp), is only usable 98 on POWER7 or later processors, and cannot emulate a 99 different processor from the host processor. 100 101 If unsure, say N. 102 103config KVM_BOOK3S_64_PR 104 tristate "KVM support without using hypervisor mode in host" 105 depends on KVM_BOOK3S_64 106 select KVM_BOOK3S_PR_POSSIBLE 107 help 108 Support running guest kernels in virtual machines on processors 109 without using hypervisor mode in the host, by running the 110 guest in user mode (problem state) and emulating all 111 privileged instructions and registers. 112 113 This is not as fast as using hypervisor mode, but works on 114 machines where hypervisor mode is not available or not usable, 115 and can emulate processors that are different from the host 116 processor, including emulating 32-bit processors on a 64-bit 117 host. 118 119config KVM_BOOK3S_HV_EXIT_TIMING 120 bool "Detailed timing for hypervisor real-mode code" 121 depends on KVM_BOOK3S_HV_POSSIBLE && DEBUG_FS 122 help 123 Calculate time taken for each vcpu in the real-mode guest entry, 124 exit, and interrupt handling code, plus time spent in the guest 125 and in nap mode due to idle (cede) while other threads are still 126 in the guest. The total, minimum and maximum times in nanoseconds 127 together with the number of executions are reported in debugfs in 128 kvm/vm#/vcpu#/timings. The overhead is of the order of 30 - 40 129 ns per exit on POWER8. 130 131 If unsure, say N. 132 133config KVM_BOOK3S_HV_NESTED_PMU_WORKAROUND 134 bool "Nested L0 host workaround for L1 KVM host PMU handling bug" if EXPERT 135 depends on KVM_BOOK3S_HV_POSSIBLE 136 default !EXPERT 137 help 138 Old nested HV capable Linux guests have a bug where they don't 139 reflect the PMU in-use status of their L2 guest to the L0 host 140 while the L2 PMU registers are live. This can result in loss 141 of L2 PMU register state, causing perf to not work correctly in 142 L2 guests. 143 144 Selecting this option for the L0 host implements a workaround for 145 those buggy L1s which saves the L2 state, at the cost of performance 146 in all nested-capable guest entry/exit. 147 148config KVM_BOOKE_HV 149 bool 150 151config KVM_EXIT_TIMING 152 bool "Detailed exit timing" 153 depends on KVM_E500V2 || KVM_E500MC 154 help 155 Calculate elapsed time for every exit/enter cycle. A per-vcpu 156 report is available in debugfs kvm/vm#_vcpu#_timing. 157 The overhead is relatively small, however it is not recommended for 158 production environments. 159 160 If unsure, say N. 161 162config KVM_E500V2 163 bool "KVM support for PowerPC E500v2 processors" 164 depends on E500 && !PPC_E500MC 165 select KVM 166 select KVM_MMIO 167 select MMU_NOTIFIER 168 help 169 Support running unmodified E500 guest kernels in virtual machines on 170 E500v2 host processors. 171 172 This module provides access to the hardware capabilities through 173 a character device node named /dev/kvm. 174 175 If unsure, say N. 176 177config KVM_E500MC 178 bool "KVM support for PowerPC E500MC/E5500/E6500 processors" 179 depends on PPC_E500MC 180 select KVM 181 select KVM_MMIO 182 select KVM_BOOKE_HV 183 select MMU_NOTIFIER 184 help 185 Support running unmodified E500MC/E5500/E6500 guest kernels in 186 virtual machines on E500MC/E5500/E6500 host processors. 187 188 This module provides access to the hardware capabilities through 189 a character device node named /dev/kvm. 190 191 If unsure, say N. 192 193config KVM_MPIC 194 bool "KVM in-kernel MPIC emulation" 195 depends on KVM && E500 196 select HAVE_KVM_IRQCHIP 197 select HAVE_KVM_IRQFD 198 select HAVE_KVM_IRQ_ROUTING 199 select HAVE_KVM_MSI 200 help 201 Enable support for emulating MPIC devices inside the 202 host kernel, rather than relying on userspace to emulate. 203 Currently, support is limited to certain versions of 204 Freescale's MPIC implementation. 205 206config KVM_XICS 207 bool "KVM in-kernel XICS emulation" 208 depends on KVM_BOOK3S_64 && !KVM_MPIC 209 select HAVE_KVM_IRQCHIP 210 select HAVE_KVM_IRQFD 211 default y 212 help 213 Include support for the XICS (eXternal Interrupt Controller 214 Specification) interrupt controller architecture used on 215 IBM POWER (pSeries) servers. 216 217config KVM_XIVE 218 bool 219 default y 220 depends on KVM_XICS && PPC_XIVE_NATIVE && KVM_BOOK3S_HV_POSSIBLE 221 222endif # VIRTUALIZATION 223