# SPDX-License-Identifier: GPL-2.0
#
# 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
