#
# 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 "Kernel-based Virtual Machine (KVM) support"
	select PREEMPT_NOTIFIERS
	select ANON_INODES
	select HAVE_KVM_CPU_RELAX_INTERCEPT
	select KVM_MMIO
	select KVM_ARM_HOST
	depends on ARM_VIRT_EXT && ARM_LPAE && !CPU_BIG_ENDIAN
	---help---
	  Support hosting virtualized guest machines. You will also
	  need to select one or more of the processor modules below.

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

	  If unsure, say N.

config KVM_ARM_HOST
	bool "KVM host support for ARM cpus."
	depends on KVM
	depends on MMU
	select	MMU_NOTIFIER
	---help---
	  Provides host support for ARM processors.

config KVM_ARM_MAX_VCPUS
	int "Number maximum supported virtual CPUs per VM"
	depends on KVM_ARM_HOST
	default 4
	help
	  Static number of max supported virtual CPUs per VM.

	  If you choose a high number, the vcpu structures will be quite
	  large, so only choose a reasonable number that you expect to
	  actually use.

config KVM_ARM_VGIC
	bool "KVM support for Virtual GIC"
	depends on KVM_ARM_HOST && OF
	select HAVE_KVM_IRQCHIP
	default y
	---help---
	  Adds support for a hardware assisted, in-kernel GIC emulation.

config KVM_ARM_TIMER
	bool "KVM support for Architected Timers"
	depends on KVM_ARM_VGIC && ARM_ARCH_TIMER
	select HAVE_KVM_IRQCHIP
	default y
	---help---
	  Adds support for the Architected Timers in virtual machines

endif # VIRTUALIZATION
