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