#
# This Kconfig describes xen options
#

config XEN
	bool "Xen guest support"
	select PARAVIRT
	select PARAVIRT_CLOCK
	select XEN_HAVE_PVMMU
	depends on X86_64 || (X86_32 && X86_PAE && !X86_VISWS)
	depends on 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 500 if X86_64
       default 64 if X86_32
       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.

