Greg Kroah-Hartman | b244131 | 2017-11-01 15:07:57 +0100 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0 |
Hollis Blanchard | bbf45ba | 2008-04-16 23:28:09 -0500 | [diff] [blame] | 2 | # |
| 3 | # KVM configuration |
| 4 | # |
| 5 | |
Avi Kivity | 0ba12d1 | 2009-05-21 16:45:19 +0300 | [diff] [blame] | 6 | source "virt/kvm/Kconfig" |
Avi Kivity | 5d9b8e3 | 2009-01-04 18:04:18 +0200 | [diff] [blame] | 7 | |
Hollis Blanchard | bbf45ba | 2008-04-16 23:28:09 -0500 | [diff] [blame] | 8 | menuconfig VIRTUALIZATION |
| 9 | bool "Virtualization" |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 10 | help |
Hollis Blanchard | bbf45ba | 2008-04-16 23:28:09 -0500 | [diff] [blame] | 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 | |
| 18 | if VIRTUALIZATION |
| 19 | |
| 20 | config KVM |
Hollis Blanchard | 74ef740 | 2008-11-07 13:15:13 -0600 | [diff] [blame] | 21 | bool |
Hollis Blanchard | bbf45ba | 2008-04-16 23:28:09 -0500 | [diff] [blame] | 22 | select PREEMPT_NOTIFIERS |
Alexander Graf | 0e673fb | 2012-10-09 00:06:20 +0200 | [diff] [blame] | 23 | select HAVE_KVM_EVENTFD |
Paolo Bonzini | 5cb0944 | 2017-12-12 17:41:34 +0100 | [diff] [blame] | 24 | select HAVE_KVM_VCPU_ASYNC_IOCTL |
Pranith Kumar | 83fe27e | 2014-12-05 11:24:45 -0500 | [diff] [blame] | 25 | select SRCU |
Paul Mackerras | 4b3d173 | 2016-08-18 16:04:41 +1000 | [diff] [blame] | 26 | select KVM_VFIO |
Suresh Warrier | 9576730 | 2016-08-19 15:35:47 +1000 | [diff] [blame] | 27 | select IRQ_BYPASS_MANAGER |
| 28 | select HAVE_KVM_IRQ_BYPASS |
Maciej S. Szmigiero | ed92273 | 2021-12-06 20:54:28 +0100 | [diff] [blame] | 29 | select INTERVAL_TREE |
Hollis Blanchard | 74ef740 | 2008-11-07 13:15:13 -0600 | [diff] [blame] | 30 | |
Alexander Graf | c14dea0 | 2010-04-16 00:11:41 +0200 | [diff] [blame] | 31 | config KVM_BOOK3S_HANDLER |
| 32 | bool |
| 33 | |
Alexander Graf | 4f84139 | 2010-04-16 00:11:58 +0200 | [diff] [blame] | 34 | config KVM_BOOK3S_32_HANDLER |
| 35 | bool |
| 36 | select KVM_BOOK3S_HANDLER |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 37 | select KVM_MMIO |
Alexander Graf | 4f84139 | 2010-04-16 00:11:58 +0200 | [diff] [blame] | 38 | |
Alexander Graf | c4f9c77 | 2009-10-30 05:47:24 +0000 | [diff] [blame] | 39 | config KVM_BOOK3S_64_HANDLER |
| 40 | bool |
Alexander Graf | c14dea0 | 2010-04-16 00:11:41 +0200 | [diff] [blame] | 41 | select KVM_BOOK3S_HANDLER |
Alexander Graf | c4f9c77 | 2009-10-30 05:47:24 +0000 | [diff] [blame] | 42 | |
Aneesh Kumar K.V | 7aa7993 | 2013-10-07 22:17:51 +0530 | [diff] [blame] | 43 | config KVM_BOOK3S_PR_POSSIBLE |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 44 | bool |
| 45 | select KVM_MMIO |
Alexander Graf | 9b0cb3c | 2012-08-10 13:23:55 +0200 | [diff] [blame] | 46 | select MMU_NOTIFIER |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 47 | |
Aneesh Kumar K.V | 9975f5e | 2013-10-07 22:17:52 +0530 | [diff] [blame] | 48 | config KVM_BOOK3S_HV_POSSIBLE |
| 49 | bool |
| 50 | |
Alexander Graf | 4f84139 | 2010-04-16 00:11:58 +0200 | [diff] [blame] | 51 | config KVM_BOOK3S_32 |
| 52 | tristate "KVM support for PowerPC book3s_32 processors" |
Kees Cook | 07ff8b5 | 2013-01-16 18:53:22 -0800 | [diff] [blame] | 53 | depends on PPC_BOOK3S_32 && !SMP && !PTE_64BIT |
Alexander Graf | 4f84139 | 2010-04-16 00:11:58 +0200 | [diff] [blame] | 54 | select KVM |
| 55 | select KVM_BOOK3S_32_HANDLER |
Aneesh Kumar K.V | 7aa7993 | 2013-10-07 22:17:51 +0530 | [diff] [blame] | 56 | select KVM_BOOK3S_PR_POSSIBLE |
Christophe Leroy | 27f6995 | 2021-01-19 06:36:52 +0000 | [diff] [blame] | 57 | select PPC_FPU |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 58 | help |
Alexander Graf | 4f84139 | 2010-04-16 00:11:58 +0200 | [diff] [blame] | 59 | Support running unmodified book3s_32 guest kernels |
| 60 | in virtual machines on book3s_32 host processors. |
| 61 | |
| 62 | This module provides access to the hardware capabilities through |
| 63 | a character device node named /dev/kvm. |
| 64 | |
| 65 | If unsure, say N. |
| 66 | |
Alexander Graf | c4f9c77 | 2009-10-30 05:47:24 +0000 | [diff] [blame] | 67 | config KVM_BOOK3S_64 |
| 68 | tristate "KVM support for PowerPC book3s_64 processors" |
Kees Cook | 07ff8b5 | 2013-01-16 18:53:22 -0800 | [diff] [blame] | 69 | depends on PPC_BOOK3S_64 |
Alexander Graf | c4f9c77 | 2009-10-30 05:47:24 +0000 | [diff] [blame] | 70 | select KVM_BOOK3S_64_HANDLER |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 71 | select KVM |
Aneesh Kumar K.V | 9975f5e | 2013-10-07 22:17:52 +0530 | [diff] [blame] | 72 | select KVM_BOOK3S_PR_POSSIBLE if !KVM_BOOK3S_HV_POSSIBLE |
Nicholas Piggin | c285737 | 2021-12-02 00:41:51 +1000 | [diff] [blame] | 73 | select PPC_64S_HASH_MMU |
Ulf Magnusson | 57ea5f16 | 2018-02-05 02:21:14 +0100 | [diff] [blame] | 74 | select SPAPR_TCE_IOMMU if IOMMU_SUPPORT && (PPC_PSERIES || PPC_POWERNV) |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 75 | help |
Alexander Graf | c4f9c77 | 2009-10-30 05:47:24 +0000 | [diff] [blame] | 76 | Support running unmodified book3s_64 and book3s_32 guest kernels |
| 77 | in virtual machines on book3s_64 host processors. |
| 78 | |
| 79 | This module provides access to the hardware capabilities through |
| 80 | a character device node named /dev/kvm. |
| 81 | |
| 82 | If unsure, say N. |
| 83 | |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 84 | config KVM_BOOK3S_64_HV |
Thomas Huth | 129fd42 | 2015-05-22 11:41:01 +0200 | [diff] [blame] | 85 | tristate "KVM for POWER7 and later using hypervisor mode in host" |
Shreyas B. Prabhu | a7e73e7 | 2015-04-16 16:28:09 +0530 | [diff] [blame] | 86 | depends on KVM_BOOK3S_64 && PPC_POWERNV |
Aneesh Kumar K.V | 9975f5e | 2013-10-07 22:17:52 +0530 | [diff] [blame] | 87 | select KVM_BOOK3S_HV_POSSIBLE |
Paul Mackerras | 342d3db | 2011-12-12 12:38:05 +0000 | [diff] [blame] | 88 | select MMU_NOTIFIER |
Aneesh Kumar K.V | fa61a4e3 | 2013-07-02 11:15:16 +0530 | [diff] [blame] | 89 | select CMA |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 90 | help |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 91 | Support running unmodified book3s_64 guest kernels in |
Thomas Huth | 129fd42 | 2015-05-22 11:41:01 +0200 | [diff] [blame] | 92 | virtual machines on POWER7 and newer processors that have |
Paul Mackerras | 9e368f2 | 2011-06-29 00:40:08 +0000 | [diff] [blame] | 93 | hypervisor mode available to the host. |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 94 | |
| 95 | If you say Y here, KVM will use the hardware virtualization |
| 96 | facilities of POWER7 (and later) processors, meaning that |
| 97 | guest operating systems will run at full hardware speed |
| 98 | using supervisor and user modes. However, this also means |
| 99 | that KVM is not usable under PowerVM (pHyp), is only usable |
Thomas Huth | 129fd42 | 2015-05-22 11:41:01 +0200 | [diff] [blame] | 100 | on POWER7 or later processors, and cannot emulate a |
| 101 | different processor from the host processor. |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 102 | |
| 103 | If unsure, say N. |
| 104 | |
| 105 | config KVM_BOOK3S_64_PR |
Aneesh Kumar K.V | 2ba9f0d | 2013-10-07 22:17:59 +0530 | [diff] [blame] | 106 | tristate "KVM support without using hypervisor mode in host" |
| 107 | depends on KVM_BOOK3S_64 |
Aneesh Kumar K.V | 7aa7993 | 2013-10-07 22:17:51 +0530 | [diff] [blame] | 108 | select KVM_BOOK3S_PR_POSSIBLE |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 109 | help |
Aneesh Kumar K.V | 9975f5e | 2013-10-07 22:17:52 +0530 | [diff] [blame] | 110 | Support running guest kernels in virtual machines on processors |
| 111 | without using hypervisor mode in the host, by running the |
| 112 | guest in user mode (problem state) and emulating all |
| 113 | privileged instructions and registers. |
| 114 | |
| 115 | This is not as fast as using hypervisor mode, but works on |
| 116 | machines where hypervisor mode is not available or not usable, |
| 117 | and can emulate processors that are different from the host |
| 118 | processor, including emulating 32-bit processors on a 64-bit |
| 119 | host. |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 120 | |
Paul Mackerras | b6c295d | 2015-03-28 14:21:02 +1100 | [diff] [blame] | 121 | config KVM_BOOK3S_HV_EXIT_TIMING |
| 122 | bool "Detailed timing for hypervisor real-mode code" |
| 123 | depends on KVM_BOOK3S_HV_POSSIBLE && DEBUG_FS |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 124 | help |
Paul Mackerras | b6c295d | 2015-03-28 14:21:02 +1100 | [diff] [blame] | 125 | Calculate time taken for each vcpu in the real-mode guest entry, |
| 126 | exit, and interrupt handling code, plus time spent in the guest |
| 127 | and in nap mode due to idle (cede) while other threads are still |
| 128 | in the guest. The total, minimum and maximum times in nanoseconds |
| 129 | together with the number of executions are reported in debugfs in |
| 130 | kvm/vm#/vcpu#/timings. The overhead is of the order of 30 - 40 |
| 131 | ns per exit on POWER8. |
| 132 | |
| 133 | If unsure, say N. |
| 134 | |
Nicholas Piggin | d3c8a2d | 2021-11-23 19:51:48 +1000 | [diff] [blame] | 135 | config KVM_BOOK3S_HV_NESTED_PMU_WORKAROUND |
| 136 | bool "Nested L0 host workaround for L1 KVM host PMU handling bug" if EXPERT |
| 137 | depends on KVM_BOOK3S_HV_POSSIBLE |
| 138 | default !EXPERT |
| 139 | help |
| 140 | Old nested HV capable Linux guests have a bug where they don't |
| 141 | reflect the PMU in-use status of their L2 guest to the L0 host |
| 142 | while the L2 PMU registers are live. This can result in loss |
| 143 | of L2 PMU register state, causing perf to not work correctly in |
| 144 | L2 guests. |
| 145 | |
| 146 | Selecting this option for the L0 host implements a workaround for |
| 147 | those buggy L1s which saves the L2 state, at the cost of performance |
| 148 | in all nested-capable guest entry/exit. |
| 149 | |
Scott Wood | d30f6e4 | 2011-12-20 15:34:43 +0000 | [diff] [blame] | 150 | config KVM_BOOKE_HV |
| 151 | bool |
| 152 | |
Hollis Blanchard | 73e75b4 | 2008-12-02 15:51:57 -0600 | [diff] [blame] | 153 | config KVM_EXIT_TIMING |
| 154 | bool "Detailed exit timing" |
Alexander Graf | b2677b8 | 2014-07-25 10:38:59 +0200 | [diff] [blame] | 155 | depends on KVM_E500V2 || KVM_E500MC |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 156 | help |
Hollis Blanchard | 73e75b4 | 2008-12-02 15:51:57 -0600 | [diff] [blame] | 157 | Calculate elapsed time for every exit/enter cycle. A per-vcpu |
| 158 | report is available in debugfs kvm/vm#_vcpu#_timing. |
| 159 | The overhead is relatively small, however it is not recommended for |
| 160 | production environments. |
| 161 | |
| 162 | If unsure, say N. |
| 163 | |
Alexander Graf | bf7ca4b | 2012-02-15 23:40:00 +0000 | [diff] [blame] | 164 | config KVM_E500V2 |
| 165 | bool "KVM support for PowerPC E500v2 processors" |
Kees Cook | 07ff8b5 | 2013-01-16 18:53:22 -0800 | [diff] [blame] | 166 | depends on E500 && !PPC_E500MC |
Hollis Blanchard | bc8080c | 2009-01-03 16:23:10 -0600 | [diff] [blame] | 167 | select KVM |
Paul Mackerras | de56a94 | 2011-06-29 00:21:34 +0000 | [diff] [blame] | 168 | select KVM_MMIO |
Alexander Graf | 862d31f | 2012-07-31 00:19:50 +0200 | [diff] [blame] | 169 | select MMU_NOTIFIER |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 170 | help |
Hollis Blanchard | bc8080c | 2009-01-03 16:23:10 -0600 | [diff] [blame] | 171 | Support running unmodified E500 guest kernels in virtual machines on |
Alexander Graf | bf7ca4b | 2012-02-15 23:40:00 +0000 | [diff] [blame] | 172 | E500v2 host processors. |
Hollis Blanchard | bc8080c | 2009-01-03 16:23:10 -0600 | [diff] [blame] | 173 | |
| 174 | This module provides access to the hardware capabilities through |
| 175 | a character device node named /dev/kvm. |
| 176 | |
| 177 | If unsure, say N. |
| 178 | |
Scott Wood | 73196cd3 | 2011-12-20 15:34:47 +0000 | [diff] [blame] | 179 | config KVM_E500MC |
Mihai Caraman | d9ce604 | 2013-04-11 00:03:14 +0000 | [diff] [blame] | 180 | bool "KVM support for PowerPC E500MC/E5500/E6500 processors" |
Kees Cook | 07ff8b5 | 2013-01-16 18:53:22 -0800 | [diff] [blame] | 181 | depends on PPC_E500MC |
Scott Wood | 73196cd3 | 2011-12-20 15:34:47 +0000 | [diff] [blame] | 182 | select KVM |
| 183 | select KVM_MMIO |
| 184 | select KVM_BOOKE_HV |
Alexander Graf | 862d31f | 2012-07-31 00:19:50 +0200 | [diff] [blame] | 185 | select MMU_NOTIFIER |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 186 | help |
Mihai Caraman | d9ce604 | 2013-04-11 00:03:14 +0000 | [diff] [blame] | 187 | Support running unmodified E500MC/E5500/E6500 guest kernels in |
| 188 | virtual machines on E500MC/E5500/E6500 host processors. |
Scott Wood | 73196cd3 | 2011-12-20 15:34:47 +0000 | [diff] [blame] | 189 | |
| 190 | This module provides access to the hardware capabilities through |
| 191 | a character device node named /dev/kvm. |
| 192 | |
| 193 | If unsure, say N. |
| 194 | |
Scott Wood | 5df554ad | 2013-04-12 14:08:46 +0000 | [diff] [blame] | 195 | config KVM_MPIC |
| 196 | bool "KVM in-kernel MPIC emulation" |
Alexander Graf | 447a03c | 2013-04-17 01:54:26 +0200 | [diff] [blame] | 197 | depends on KVM && E500 |
Alexander Graf | de9ba2f | 2013-04-16 17:42:19 +0200 | [diff] [blame] | 198 | select HAVE_KVM_IRQCHIP |
Paul Mackerras | 297e210 | 2014-06-30 20:51:13 +1000 | [diff] [blame] | 199 | select HAVE_KVM_IRQFD |
Alexander Graf | de9ba2f | 2013-04-16 17:42:19 +0200 | [diff] [blame] | 200 | select HAVE_KVM_IRQ_ROUTING |
| 201 | select HAVE_KVM_MSI |
Scott Wood | 5df554ad | 2013-04-12 14:08:46 +0000 | [diff] [blame] | 202 | help |
| 203 | Enable support for emulating MPIC devices inside the |
Enrico Weigelt, metux IT consult | 4f44e8a | 2019-07-03 18:04:13 +0200 | [diff] [blame] | 204 | host kernel, rather than relying on userspace to emulate. |
| 205 | Currently, support is limited to certain versions of |
| 206 | Freescale's MPIC implementation. |
Scott Wood | 5df554ad | 2013-04-12 14:08:46 +0000 | [diff] [blame] | 207 | |
Benjamin Herrenschmidt | bc5ad3f | 2013-04-17 20:30:26 +0000 | [diff] [blame] | 208 | config KVM_XICS |
| 209 | bool "KVM in-kernel XICS emulation" |
| 210 | depends on KVM_BOOK3S_64 && !KVM_MPIC |
Paul Mackerras | 25a2150b | 2014-06-30 20:51:14 +1000 | [diff] [blame] | 211 | select HAVE_KVM_IRQCHIP |
| 212 | select HAVE_KVM_IRQFD |
Anton Blanchard | 476ce5ef0 | 2014-12-03 13:30:42 +1100 | [diff] [blame] | 213 | default y |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 214 | help |
Benjamin Herrenschmidt | bc5ad3f | 2013-04-17 20:30:26 +0000 | [diff] [blame] | 215 | Include support for the XICS (eXternal Interrupt Controller |
| 216 | Specification) interrupt controller architecture used on |
| 217 | IBM POWER (pSeries) servers. |
| 218 | |
Benjamin Herrenschmidt | 5af5099 | 2017-04-05 17:54:56 +1000 | [diff] [blame] | 219 | config KVM_XIVE |
| 220 | bool |
| 221 | default y |
| 222 | depends on KVM_XICS && PPC_XIVE_NATIVE && KVM_BOOK3S_HV_POSSIBLE |
| 223 | |
Hollis Blanchard | bbf45ba | 2008-04-16 23:28:09 -0500 | [diff] [blame] | 224 | endif # VIRTUALIZATION |