# SPDX-License-Identifier: GPL-2.0
#
# KVM configuration
#

source "virt/kvm/Kconfig"
source "virt/lib/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"
	depends on OF
	select MMU_NOTIFIER
	select PREEMPT_NOTIFIERS
	select ANON_INODES
	select HAVE_KVM_CPU_RELAX_INTERCEPT
	select HAVE_KVM_ARCH_TLB_FLUSH_ALL
	select KVM_MMIO
	select KVM_ARM_HOST
	select KVM_GENERIC_DIRTYLOG_READ_PROTECT
	select SRCU
	select KVM_VFIO
	select HAVE_KVM_EVENTFD
	select HAVE_KVM_IRQFD
	select KVM_ARM_PMU if HW_PERF_EVENTS
	select HAVE_KVM_MSI
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQ_ROUTING
	select IRQ_BYPASS_MANAGER
	select HAVE_KVM_IRQ_BYPASS
	---help---
	  Support hosting virtualized guest machines.
	  We don't support KVM with 16K page tables yet, due to the multiple
	  levels of fake page tables.

	  If unsure, say N.

config KVM_ARM_HOST
	bool
	---help---
	  Provides host support for ARM processors.

config KVM_ARM_PMU
	bool
	---help---
	  Adds support for a virtual Performance Monitoring Unit (PMU) in
	  virtual machines.

source drivers/vhost/Kconfig

endif # VIRTUALIZATION
