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

source "virt/lib/Kconfig"
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

menuconfig KVM
	bool "Kernel-based Virtual Machine (KVM) support"
	depends on HAVE_KVM
	select KVM_GENERIC_HARDWARE_ENABLING
	select MMU_NOTIFIER
	select PREEMPT_NOTIFIERS
	select HAVE_KVM_CPU_RELAX_INTERCEPT
	select HAVE_KVM_ARCH_TLB_FLUSH_ALL
	select KVM_MMIO
	select KVM_GENERIC_DIRTYLOG_READ_PROTECT
	select KVM_XFER_TO_GUEST_WORK
	select KVM_VFIO
	select HAVE_KVM_EVENTFD
	select HAVE_KVM_IRQFD
	select HAVE_KVM_DIRTY_RING_ACQ_REL
	select NEED_KVM_DIRTY_RING_WITH_BITMAP
	select HAVE_KVM_MSI
	select HAVE_KVM_IRQCHIP
	select HAVE_KVM_IRQ_ROUTING
	select IRQ_BYPASS_MANAGER
	select HAVE_KVM_IRQ_BYPASS
	select HAVE_KVM_VCPU_RUN_PID_CHANGE
	select SCHED_INFO
	select GUEST_PERF_EVENTS if PERF_EVENTS
	select INTERVAL_TREE
	help
	  Support hosting virtualized guest machines.

	  If unsure, say N.

config NVHE_EL2_DEBUG
	bool "Debug mode for non-VHE EL2 object"
	depends on KVM
	help
	  Say Y here to enable the debug mode for the non-VHE KVM EL2 object.
	  Failure reports will BUG() in the hypervisor. This is intended for
	  local EL2 hypervisor development.

	  If unsure, say N.

config PROTECTED_NVHE_STACKTRACE
	bool "Protected KVM hypervisor stacktraces"
	depends on NVHE_EL2_DEBUG
	default n
	help
	  Say Y here to enable pKVM hypervisor stacktraces on hyp_panic()

	  If using protected nVHE mode, but cannot afford the associated
	  memory cost (less than 0.75 page per CPU) of pKVM stacktraces,
	  say N.

	  If unsure, or not using protected nVHE (pKVM), say N.

config PKVM_PROXY
	bool "Access to pkvm proxy debug file to issue hypercalls from usermode (UNSAFE)"
	depends on NVHE_EL2_DEBUG
	default n
	help
	  Say Y here to enable the pkvm proxy component that allows a user mode
	  program to issue direct hypercalls. This is unsafe for obvious
	  reasons. It makes it really easy for a simple user mode program with
	  rights to access the debugfs to panic the entire system.

	  If unsure, say N.

config KVM_ARM_HYP_DEBUG_UART
	bool "Hack up some basic UART functionality at EL2"

config KVM_ARM_HYP_DEBUG_UART_ADDR
	hex "Physical address of the PL011 for EL2 to use"
	depends on KVM_ARM_HYP_DEBUG_UART
	default 0x09000000

endif # VIRTUALIZATION
