| # 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 |