# Virtualization drivers configuration options

# Copyright (c) 2015-2020 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menuconfig VIRTUALIZATION
	bool "Virtualization guest drivers"
	help
	  This contains various drivers meant to support and expose features
	  when Zephyr is running as a guest in a virtualized or emulated
	  environment.

if VIRTUALIZATION

config IVSHMEM
	bool "Inter-VM shared memory device (ivshmem)"
	depends on PCIE
	help
	  This will enable support of qemu's ivshmem device, which is also
	  present in ACRN hypervisor, and lets VM sharing memory with each
	  other.

if IVSHMEM

module = IVSHMEM
module-str = ivshmem
source "subsys/logging/Kconfig.template.log_config"

config IVSHMEM_DOORBELL
	bool "Support interrupt based ivshmem (doorbell version)"
	help
	  This will enable support of ivshmem-doorbell, i.e. the interrupt
	  based ivshmem. For ivshmem-v2 INTx interrupts are also supported.

config IVSHMEM_MSI_X_VECTORS
	int "How many notification vectors should be pre-allocated?"
	default 2
	depends on IVSHMEM_DOORBELL
	help
	  MSI-X vector holders must be pre-allocated. One can pre-allocate
	  more or less than necessary. Depends on how many VMs will connect
	  with each other. These are know to be the notification vectors in
	  ivshmem.

config IVSHMEM_INT_PRIORITY
	int "MSI-X interrupt priority"
	default 2
	depends on IVSHMEM_DOORBELL
	help
	  Interrupt priority used for the MSI-X generated interrupts.
	  INTx interrupt priority is configured in the device tree.

config IVSHMEM_SHELL
	bool "IVshmem shell module"
	depends on SHELL
	help
	  This is mostly a module to help getting info the ivshmem and/or
	  quickly testing your ivshmem client application (from another VM).

endif # IVSHMEM

config IVSHMEM_V2
	bool "Inter-VM shared memory v2 (ivshmem-v2)"
	select IVSHMEM
	help
	  Enable ivshmem-v2 support.
	  ivshmem-v2 is primarily used for IPC in the Jailhouse hypervisor.

config IVSHMEM_V2_MAX_PEERS
	int "Maximum number of ivshmem-v2 peers"
	depends on IVSHMEM_V2
	default 2
	range 2 65536

endif # VIRTUALIZATION
