# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2022-2026 EPAM Systems

if XEN

menu "Xen drivers"

config XEN_DMOP
	bool "Xen dmop hypercall wrappers"
	help
	  Enable lightweight wrappers for Xen dm_op hypercalls used by
	  Xen device backends. Disable to drop dmop.c from the build.

config XEN_REGIONS
	bool "Xen extended regions driver"
	depends on MMU
	select SYS_MEM_BLOCKS
	select KERNEL_DIRECT_MAP
	help
	  Xen extended regions driver. Allows using extended regions, provided by
	  XEN hypervisor to Zephyr. This memory can be used to avoid allocations
	  from Zephyr heap memory in favour of free unmapped space on Stage 2
	  translation level. Requires the presence of at least one extended region
	  in the hypervisor node.

config XEN_GRANT_TABLE
	bool "Xen grant table driver"
	depends on HEAP_MEM_POOL_SIZE > 0 || XEN_REGIONS
	default y
	help
	  Xen grant table driver. Please note that driver uses dynamic memory
	  allocation with k_malloc(), so CONFIG_HEAP_MEM_POOL_SIZE should be
	  >= number of pages, that you want to alloc and grant or foreign frames
	  that you want to map.

config XEN_GRANT_TABLE_INIT_PRIORITY
	int "Grant table driver init priority"
	depends on XEN_GRANT_TABLE
	default 50

config NR_GRANT_FRAMES
	int "Number of grant frames mapped to Zephyr"
	depends on XEN_GRANT_TABLE
	default 1
	help
	  This value configures how much grant frames will be supported by Zephyr
	  grant table driver in runtime. This value should be <= max_grant_frames
	  configured for domain in Xen hypervisor.

config XEN_EVENTS
	bool "Xen events driver"
	default y
	help
	  Xen event channels driver.

endmenu

endif # XEN
