#
# 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 ANON_INODES
	select HAVE_KVM_EVENTFD

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
	---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 support for POWER7 and PPC970 using hypervisor mode in host"
	depends on KVM_BOOK3S_64
	depends on !CPU_LITTLE_ENDIAN
	select KVM_BOOK3S_HV_POSSIBLE
	select MMU_NOTIFIER
	select CMA
	---help---
	  Support running unmodified book3s_64 guest kernels in
	  virtual machines on POWER7 and PPC970 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 PPC970-family 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_BOOKE_HV
	bool

config KVM_440
	bool "KVM support for PowerPC 440 processors"
	depends on 44x
	select KVM
	select KVM_MMIO
	---help---
	  Support running unmodified 440 guest kernels in virtual machines on
	  440 host processors.

	  This module provides access to the hardware capabilities through
	  a character device node named /dev/kvm.

	  If unsure, say N.

config KVM_EXIT_TIMING
	bool "Detailed exit timing"
	depends on KVM_440 || 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_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
	---help---
	  Include support for the XICS (eXternal Interrupt Controller
	  Specification) interrupt controller architecture used on
	  IBM POWER (pSeries) servers.

source drivers/vhost/Kconfig

endif # VIRTUALIZATION
