# SPDX-License-Identifier: GPL-2.0
#
# This Kconfig describes xen options
#

config XEN
	bool "Xen guest support"
	depends on PARAVIRT
	select PARAVIRT_CLOCK
	select X86_HV_CALLBACK_VECTOR
	depends on X86_64 || (X86_32 && X86_PAE)
	depends on X86_LOCAL_APIC && X86_TSC
	help
	  This is the Linux Xen port.  Enabling this will allow the
	  kernel to boot in a paravirtualized environment under the
	  Xen hypervisor.

config XEN_PV
	bool "Xen PV guest support"
	default y
	depends on XEN
	depends on X86_64
	select PARAVIRT_XXL
	select XEN_HAVE_PVMMU
	select XEN_HAVE_VPMU
	select GUEST_PERF_EVENTS
	help
	  Support running as a Xen PV guest.

config XEN_512GB
	bool "Limit Xen pv-domain memory to 512GB"
	depends on XEN_PV
	default y
	help
	  Limit paravirtualized user domains to 512GB of RAM.

	  The Xen tools and crash dump analysis tools might not support
	  pv-domains with more than 512 GB of RAM. This option controls the
	  default setting of the kernel to use only up to 512 GB or more.
	  It is always possible to change the default via specifying the
	  boot parameter "xen_512gb_limit".

config XEN_PV_SMP
	def_bool y
	depends on XEN_PV && SMP

config XEN_PV_DOM0
	def_bool y
	depends on XEN_PV && XEN_DOM0

config XEN_PVHVM
	def_bool y
	depends on XEN && X86_LOCAL_APIC

config XEN_PVHVM_SMP
	def_bool y
	depends on XEN_PVHVM && SMP

config XEN_PVHVM_GUEST
	bool "Xen PVHVM guest support"
	default y
	depends on XEN_PVHVM && PCI
	help
	  Support running as a Xen PVHVM guest.

config XEN_SAVE_RESTORE
	bool
	depends on XEN
	select HIBERNATE_CALLBACKS
	default y

config XEN_DEBUG_FS
	bool "Enable Xen debug and tuning parameters in debugfs"
	depends on XEN && DEBUG_FS
	help
	  Enable statistics output and various tuning options in debugfs.
	  Enabling this option may incur a significant performance overhead.

config XEN_PVH
	bool "Xen PVH guest support"
	depends on XEN && XEN_PVHVM && ACPI
	select PVH
	def_bool n
	help
	  Support for running as a Xen PVH guest.

config XEN_DOM0
	bool "Xen Dom0 support"
	default XEN_PV
	depends on (XEN_PV && SWIOTLB_XEN) || (XEN_PVH && X86_64)
	depends on X86_IO_APIC && ACPI && PCI
	select X86_X2APIC if XEN_PVH && X86_64
	help
	  Support running as a Xen Dom0 guest.

config XEN_PV_MSR_SAFE
	bool "Always use safe MSR accesses in PV guests"
	default y
	depends on XEN_PV
	help
	  Use safe (not faulting) MSR access functions even if the MSR access
	  should not fault anyway.
	  The default can be changed by using the "xen_msr_safe" boot parameter.