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