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