# 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
	select PARAVIRT_XXL
	select XEN_HAVE_PVMMU
	select XEN_HAVE_VPMU
	help
	  Support running as a Xen PV guest.

config XEN_PV_SMP
	def_bool y
	depends on XEN_PV && SMP

config XEN_DOM0
	bool "Xen PV Dom0 support"
	default y
	depends on XEN_PV && PCI_XEN && SWIOTLB_XEN
	depends on X86_IO_APIC && ACPI && PCI
	help
	  Support running as a Xen PV Dom0 guest.

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

config XEN_PVHVM_SMP
	def_bool y
	depends on XEN_PVHVM && SMP

config XEN_512GB
	bool "Limit Xen pv-domain memory to 512GB"
	depends on XEN_PV && X86_64
	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_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 "Support for running as a Xen PVH guest"
	depends on XEN && XEN_PVHVM && ACPI
	select PVH
	def_bool n
