#
# This Kconfig describes xen options
#

config XEN
	bool "Xen guest support"
	depends on PARAVIRT
	select PARAVIRT_CLOCK
	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
	# XEN_PV is not ready to work with 5-level paging.
	# Changes to hypervisor are also required.
	depends on !X86_5LEVEL
	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
	default n
	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 PVH guest"
	depends on XEN && XEN_PVHVM && ACPI
	# Pre-built page tables are not ready to handle 5-level paging.
	depends on !X86_5LEVEL
	def_bool n
