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

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
	bool
	select KVM_MMIO

config KVM_BOOK3S_32
	tristate "KVM support for PowerPC book3s_32 processors"
	depends on EXPERIMENTAL && PPC_BOOK3S_32 && !SMP && !PTE_64BIT
	select KVM
	select KVM_BOOK3S_32_HANDLER
	select KVM_BOOK3S_PR
	---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 EXPERIMENTAL && PPC_BOOK3S_64
	select KVM_BOOK3S_64_HANDLER
	select KVM
	---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
	bool "KVM support for POWER7 and PPC970 using hypervisor mode in host"
	depends on KVM_BOOK3S_64
	---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
	def_bool y
	depends on KVM_BOOK3S_64 && !KVM_BOOK3S_64_HV
	select KVM_BOOK3S_PR

config KVM_440
	bool "KVM support for PowerPC 440 processors"
	depends on EXPERIMENTAL && 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_E500
	---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_E500
	bool "KVM support for PowerPC E500 processors"
	depends on EXPERIMENTAL && E500
	select KVM
	select KVM_MMIO
	---help---
	  Support running unmodified E500 guest kernels in virtual machines on
	  E500 host processors.

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

	  If unsure, say N.

source drivers/vhost/Kconfig

endif # VIRTUALIZATION
