# 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
	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.
