255 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			255 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # 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
 | |
| 	select INTERVAL_TREE
 | |
| 
 | |
| 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
 | |
| 	depends on !CONTEXT_TRACKING_USER
 | |
| 	select KVM
 | |
| 	select KVM_BOOK3S_32_HANDLER
 | |
| 	select KVM_BOOK3S_PR_POSSIBLE
 | |
| 	select PPC_FPU
 | |
| 	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 PPC_64S_HASH_MMU
 | |
| 	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
 | |
| 	depends on !CONTEXT_TRACKING_USER
 | |
| 	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 only available for hash MMU mode and only supports
 | |
| 	  guests that use hash MMU mode.
 | |
| 
 | |
| 	  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.
 | |
| 
 | |
| 	  Selecting this option will cause the SCV facility to be
 | |
| 	  disabled when the kernel is booted on the pseries platform in
 | |
| 	  hash MMU mode (regardless of PR VMs running). When any PR VMs
 | |
| 	  are running, "AIL" mode is disabled which may slow interrupts
 | |
| 	  and system calls on the host.
 | |
| 
 | |
| config KVM_BOOK3S_HV_EXIT_TIMING
 | |
| 	bool
 | |
| 
 | |
| config KVM_BOOK3S_HV_P9_TIMING
 | |
| 	bool "Detailed timing for the P9 entry point"
 | |
| 	select KVM_BOOK3S_HV_EXIT_TIMING
 | |
| 	depends on KVM_BOOK3S_HV_POSSIBLE && DEBUG_FS
 | |
| 	help
 | |
| 	  Calculate time taken for each vcpu during vcpu entry and
 | |
| 	  exit, time spent inside the guest and time spent handling
 | |
| 	  hypercalls and page faults. The total, minimum and maximum
 | |
| 	  times in nanoseconds together with the number of executions
 | |
| 	  are reported in debugfs in kvm/vm#/vcpu#/timings.
 | |
| 
 | |
| 	  If unsure, say N.
 | |
| 
 | |
| config KVM_BOOK3S_HV_P8_TIMING
 | |
| 	bool "Detailed timing for hypervisor real-mode code (for POWER8)"
 | |
| 	select KVM_BOOK3S_HV_EXIT_TIMING
 | |
| 	depends on KVM_BOOK3S_HV_POSSIBLE && DEBUG_FS && !KVM_BOOK3S_HV_P9_TIMING
 | |
| 	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_BOOK3S_HV_NESTED_PMU_WORKAROUND
 | |
| 	bool "Nested L0 host workaround for L1 KVM host PMU handling bug" if EXPERT
 | |
| 	depends on KVM_BOOK3S_HV_POSSIBLE
 | |
| 	default !EXPERT
 | |
| 	help
 | |
| 	  Old nested HV capable Linux guests have a bug where they don't
 | |
| 	  reflect the PMU in-use status of their L2 guest to the L0 host
 | |
| 	  while the L2 PMU registers are live. This can result in loss
 | |
| 	  of L2 PMU register state, causing perf to not work correctly in
 | |
| 	  L2 guests.
 | |
| 
 | |
| 	  Selecting this option for the L0 host implements a workaround for
 | |
| 	  those buggy L1s which saves the L2 state, at the cost of performance
 | |
| 	  in all nested-capable guest entry/exit.
 | |
| 
 | |
| 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 PPC_E500 && !PPC_E500MC
 | |
| 	depends on !CONTEXT_TRACKING_USER
 | |
| 	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
 | |
| 	depends on !CONTEXT_TRACKING_USER
 | |
| 	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 && PPC_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
 | |
| 
 | |
| endif # VIRTUALIZATION
 |