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