#
# This Kconfig describes xen options
#

config XEN
	bool "Xen guest support"
	select PARAVIRT
	select PARAVIRT_CLOCK
	depends on X86_64 || (X86_32 && X86_PAE && !X86_VISWS)
	depends on X86_CMPXCHG && 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_DOM0
	def_bool y
	depends on XEN && PCI_XEN && SWIOTLB_XEN
	depends on X86_LOCAL_APIC && X86_IO_APIC && ACPI && PCI

# Dummy symbol since people have come to rely on the PRIVILEGED_GUEST
# name in tools.
config XEN_PRIVILEGED_GUEST
	def_bool XEN_DOM0

config XEN_PVHVM
	def_bool y
	depends on XEN && PCI && X86_LOCAL_APIC

config XEN_MAX_DOMAIN_MEMORY
       int
       default 128
       depends on XEN
       help
         This only affects the sizing of some bss arrays, the unused
         portions of which are freed.

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.
