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