doc: Adding ivshmem general and API documentation
A quick summary on what is ivshmem and its Zephyr driver API. Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
This commit is contained in:
parent
899fb1af16
commit
e9cf9d0325
4 changed files with 65 additions and 0 deletions
|
@ -34,3 +34,4 @@ API Reference
|
|||
util/index.rst
|
||||
settings/index.rst
|
||||
timing_functions/index.rst
|
||||
virtualization/index.rst
|
||||
|
|
9
doc/reference/virtualization/index.rst
Normal file
9
doc/reference/virtualization/index.rst
Normal file
|
@ -0,0 +1,9 @@
|
|||
.. _virtualization_reference:
|
||||
|
||||
Virtualization
|
||||
##############
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
ivshmem.rst
|
45
doc/reference/virtualization/ivshmem.rst
Normal file
45
doc/reference/virtualization/ivshmem.rst
Normal file
|
@ -0,0 +1,45 @@
|
|||
.. _ivshmem_driver:
|
||||
|
||||
Inter-VM Shared Memory
|
||||
######################
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:depth: 2
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
As Zephyr is enabled to run as a guest OS on Qemu and
|
||||
`ACRN <https://projectacrn.github.io/latest/tutorials/using_zephyr_as_uos.html>`_
|
||||
it might be necessary to make VMs aware of each other, or aware of the host.
|
||||
This is made possible by exposing a shared memory among parties via a feature
|
||||
called ivshmem, which stands for inter-VM Shared Memory.
|
||||
|
||||
The Two types are supported: a plain shared memory (ivshmem-plain) or a shared
|
||||
memory with the ability for a VM to generate an interruption on another, and
|
||||
thus to be interrupted as well itself (ivshmem-doorbell).
|
||||
|
||||
Please refer to the official `Qemu ivshmem documentation
|
||||
<https://www.qemu.org/docs/master/system/ivshmem.html>`_ for more information.
|
||||
|
||||
Support
|
||||
*******
|
||||
|
||||
Zephyr supports both version: plain and doorbell. Ivshmem driver can be build
|
||||
by enabling :option:`CONFIG_IVSHMEM`. By default, this will expose the plain
|
||||
version. :option:`CONFIG_IVSHMEM_DOORBELL` needs no be enabled to get the
|
||||
doorbell version.
|
||||
|
||||
Because the doorbell version uses MSI-X vectors to support notification vectors,
|
||||
the :option:`CONFIG_IVSHMEM_MSI_X_VECTORS` has to be tweaked to the amount of
|
||||
vectors that will be needed.
|
||||
|
||||
Note that a tiny shell module can be exposed to test the ivshmem feature by
|
||||
enabling :option:`CONFIG_IVSHMEM_SHELL`.
|
||||
|
||||
API Reference
|
||||
*************
|
||||
|
||||
.. doxygengroup:: ivshmem
|
||||
:project: Zephyr
|
|
@ -7,6 +7,12 @@
|
|||
#ifndef ZEPHYR_INCLUDE_DRIVERS_VIRTUALIZATION_IVSHMEM_H_
|
||||
#define ZEPHYR_INCLUDE_DRIVERS_VIRTUALIZATION_IVSHMEM_H_
|
||||
|
||||
/**
|
||||
* @brief ivshmem reference API
|
||||
* @defgroup ivshmem ivshmem reference API
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include <zephyr/types.h>
|
||||
#include <stddef.h>
|
||||
#include <device.h>
|
||||
|
@ -131,4 +137,8 @@ static inline int ivshmem_register_handler(const struct device *dev,
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* ZEPHYR_INCLUDE_DRIVERS_VIRTUALIZATION_IVSHMEM_H_ */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue