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