# SPDX-License-Identifier: GPL-2.0
#
# 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

menuconfig KVM
	bool "Kernel-based Virtual Machine (KVM) support"
	select KVM_COMMON
	select KVM_GENERIC_HARDWARE_ENABLING
	select HAVE_KVM_CPU_RELAX_INTERCEPT
	select KVM_MMIO
	select KVM_GENERIC_DIRTYLOG_READ_PROTECT
	select VIRT_XFER_TO_GUEST_WORK
	select KVM_VFIO
	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 HAVE_KVM_IRQ_BYPASS
	select HAVE_KVM_READONLY_MEM
	select HAVE_KVM_VCPU_RUN_PID_CHANGE
	select SCHED_INFO
	select GUEST_PERF_EVENTS if PERF_EVENTS
	select KVM_GUEST_MEMFD
	help
	  Support hosting virtualized guest machines.

	  If unsure, say N.

if KVM

config PTDUMP_STAGE2_DEBUGFS
	bool "Present the stage-2 pagetables to debugfs"
	depends on DEBUG_KERNEL
	depends on DEBUG_FS
	depends on ARCH_HAS_PTDUMP
	select PTDUMP
	default n
	help
	  Say Y here if you want to show the stage-2 kernel pagetables
	  layout in a debugfs file. This information is only useful for kernel developers
	  who are working in architecture specific areas of the kernel.
	  It is probably not a good idea to enable this feature in a production
	  kernel.

	  If in doubt, say N.

config NVHE_EL2_DEBUG
	bool "Debug mode for non-VHE EL2 object"
	default n
	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.

if NVHE_EL2_DEBUG

config NVHE_EL2_TRACING
	bool
	depends on TRACING && FTRACE
	select TRACE_REMOTE
	default y

config PKVM_DISABLE_STAGE2_ON_PANIC
	bool "Disable the host stage-2 on panic"
	default n
	help
	  Relax the host stage-2 on hypervisor panic to allow the kernel to
	  unwind and symbolize the hypervisor stacktrace. This however tampers
	  the system security. This is intended for local EL2 hypervisor
	  development.

	  If unsure, say N.

config PKVM_STACKTRACE
	bool "Protected KVM hypervisor stacktraces"
	depends on PKVM_DISABLE_STAGE2_ON_PANIC
	default y
	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.

endif # NVHE_EL2_DEBUG
endif # KVM
endif # VIRTUALIZATION
