Home
last modified time | relevance | path

Searched full:ivshmem (Results 1 – 25 of 52) sorted by relevance

123

/Zephyr-latest/drivers/virtualization/
DKconfig15 config IVSHMEM config
16 bool "Inter-VM shared memory device (ivshmem)"
19 This will enable support of qemu's ivshmem device, which is also
23 if IVSHMEM
25 module = IVSHMEM
26 module-str = ivshmem
30 bool "Support interrupt based ivshmem (doorbell version)"
32 This will enable support of ivshmem-doorbell, i.e. the interrupt
33 based ivshmem. For ivshmem-v2 INTx interrupts are also supported.
43 ivshmem.
[all …]
Dvirt_ivshmem_shell.c9 #include <zephyr/drivers/virtualization/ivshmem.h>
11 static const struct device *ivshmem = DEVICE_DT_GET_ONE(qemu_ivshmem); variable
56 if (!device_is_ready(ivshmem)) { in get_ivshmem()
57 shell_error(sh, "IVshmem device is not ready"); in get_ivshmem()
76 size = ivshmem_get_mem(ivshmem, &mem); in cmd_ivshmem_shmem()
77 id = ivshmem_get_id(ivshmem); in cmd_ivshmem_shmem()
78 vectors = ivshmem_get_vectors(ivshmem); in cmd_ivshmem_shmem()
81 "IVshmem up and running: \n" in cmd_ivshmem_shmem()
105 size = ivshmem_get_mem(ivshmem, &mem); in cmd_ivshmem_dump()
139 ret = ivshmem_int_peer(ivshmem, (uint16_t)peer_id, (uint16_t)vector); in cmd_ivshmem_int()
[all …]
Dvirt_ivshmem.c11 LOG_MODULE_REGISTER(ivshmem);
21 #include <zephyr/drivers/virtualization/ivshmem.h>
40 struct ivshmem *data = dev->data; in ivshmem_configure_msi_x_interrupts()
96 struct ivshmem *data = dev->data; in ivshmem_configure_int_x_interrupts()
135 struct ivshmem *data = dev->data; in register_signal()
160 struct ivshmem *data = dev->data; in ivshmem_configure()
166 LOG_ERR("ivshmem regs bar not found"); in ivshmem_configure()
169 LOG_INF("ivshmem regs bar not found"); in ivshmem_configure()
193 LOG_ERR("Invalid ivshmem regs size %zu", mbar_regs.size); in ivshmem_configure()
271 LOG_ERR("ivshmem mem bar not found"); in ivshmem_configure()
[all …]
/Zephyr-latest/tests/drivers/virtualization/ivshmem/plain/src/
Divshmem.c10 #include <zephyr/drivers/virtualization/ivshmem.h>
12 ZTEST(ivshmem, test_ivshmem_plain) in ZTEST() argument
14 const struct device *ivshmem; in ZTEST() local
22 ivshmem = DEVICE_DT_GET_ONE(qemu_ivshmem); in ZTEST()
23 zassert_true(device_is_ready(ivshmem), "ivshmem device is not ready"); in ZTEST()
25 size = ivshmem_get_mem(ivshmem, &mem); in ZTEST()
29 id = ivshmem_get_id(ivshmem); in ZTEST()
30 zassert_equal(id, 0, "ID should be 0 on ivshmem-plain"); in ZTEST()
39 vectors = ivshmem_get_vectors(ivshmem); in ZTEST()
40 zassert_equal(vectors, 0, "ivshmem-plain cannot have vectors"); in ZTEST()
[all …]
/Zephyr-latest/samples/drivers/ipm/ipm_ivshmem/
DREADME.rst1 .. zephyr:code-sample:: ipm-ivshmem
2 :name: IPM over IVSHMEM
5 Implement inter-processor mailbox (IPM) over IVSHMEM (Inter-VM shared memory)
12 ivshmem-server needs to be available and running. The server is available in
16 ivshmem-client needs to be available as it is employed in this sample as an
17 external application. The same conditions of ivshmem-server apply to the
18 ivshmem-server, as it is also available via QEMU.
20 Preparing IVSHMEM server
22 #. The ivshmem-server utility for QEMU can be found into the Zephyr SDK
26 #. You may also find ivshmem-client utility, it can be useful to check if everything works
[all …]
/Zephyr-latest/samples/drivers/virtualization/ivshmem/doorbell/
DREADME.rst1 .. zephyr:code-sample:: ivshmem-doorbell
2 :name: IVSHMEM doorbell
3 :relevant-api: ivshmem
12 communicate using ivshmem. This is a subset of the functionality provided by
20 ivshmem-server needs to be available and running. The server is available in
24 ivshmem-client needs to be available as it is employed in this sample as an
25 external application. The same conditions of ivshmem-server applies to the
26 ivshmem-server, as it is also available via QEMU.
31 Building ivshmem-doorbell is as follows:
37 :zephyr-app: samples/drivers/virtualization/ivshmem/doorbell
[all …]
Dsample.yaml2 description: ivshmem-doorbell sample application
5 sample.virtualization.ivshmem.doorbell.arm64:
12 - ivshmem
13 sample.virtualization.ivshmem.doorbell.x64:
18 - ivshmem
Dwrite_shared_memory.sh2 # Write a fixed-size string message on the ivshmem shared memory
11 SHM_LOC="/dev/shm/ivshmem"
12 SHM_MSG="This is a message test for ivshmem shared memory"
/Zephyr-latest/drivers/mbox/
DKconfig.ivshmem5 bool "MBOX driver based on IVSHMEM-Doorbell"
8 depends on IVSHMEM
11 Mailbox driver using IVSHMEM Doorbell mechanism.
16 int "Stack size in bytes of IVSHMEM MBOX Event loop task"
19 Adjust the stack size, in bytes of the ivshmem event loop task.
22 int "Priority of IVSHMEM MBOX Event loop task"
25 Adjust the priority of the ivshmem event loop task.
/Zephyr-latest/doc/services/virtualization/
Divshmem.rst17 called ivshmem, which stands for inter-VM Shared Memory.
19 The two types are supported: a plain shared memory (ivshmem-plain) or a shared
21 thus to be interrupted as well itself (ivshmem-doorbell).
23 Please refer to the official `Qemu ivshmem documentation
24 <https://www.qemu.org/docs/master/system/devices/ivshmem.html>`_ for more information.
29 Zephyr supports both versions: plain and doorbell. Ivshmem driver can be built
38 Note that a tiny shell module can be exposed to test the ivshmem feature by
41 ivshmem-v2
44 Zephyr also supports ivshmem-v2:
46 https://github.com/siemens/jailhouse/blob/master/Documentation/ivshmem-v2-specification.md
[all …]
/Zephyr-latest/dts/bindings/virtualization/
Dqemu,ivshmem.yaml4 description: ivShMem device properties
6 compatible: "qemu,ivshmem"
12 ivshmem-v2:
15 Use ivshmem-v2.
17 ivshmem-v2 is not compatible with v1.
/Zephyr-latest/dts/bindings/ipm/
Dlinaro,ivshmem-ipm.yaml4 description: Inter processor message based on IVSHMEM
6 compatible: "linaro,ivshmem-ipm"
12 ivshmem:
15 description: ivshmem device node
/Zephyr-latest/dts/bindings/ethernet/
Dsiemens,ivshmem-eth.yaml4 description: IVSHMEM Ethernet
6 compatible: "siemens,ivshmem-eth"
12 ivshmem-v2:
15 description: ivshmem-v2 driver node
/Zephyr-latest/drivers/ipm/
DKconfig.ivshmem7 int "Stack size in bytes of IVSHMEM IPM Event loop task"
10 Adjust the stack size, in bytes of the ivshmem event loop task.
13 int "Priority of IVSHMEM IPM Event loop task"
16 Adjust the priority of the ivshmem event loop task.
DKconfig42 bool "IPM driver based on IVSHMEM-Doorbell"
45 depends on IVSHMEM
48 Interprocessor driver using IVSHMEM Doorbell mechanism.
70 source "drivers/ipm/Kconfig.ivshmem"
/Zephyr-latest/drivers/ethernet/
Deth_ivshmem.c9 #include <zephyr/drivers/virtualization/ivshmem.h>
50 const struct device *ivshmem; member
118 ivshmem_int_peer(cfg_data->ivshmem, dev_data->peer_id, dev_data->tx_rx_vector); in eth_ivshmem_send()
158 ivshmem_int_peer(cfg_data->ivshmem, dev_data->peer_id, dev_data->tx_rx_vector); in eth_ivshmem_rx()
173 ivshmem_set_state(cfg_data->ivshmem, state); in eth_ivshmem_set_state()
181 uint32_t peer_state = ivshmem_get_state(cfg_data->ivshmem, dev_data->peer_id); in eth_ivshmem_state_update()
274 if (!device_is_ready(cfg_data->ivshmem)) { in eth_ivshmem_initialize()
275 LOG_ERR("ivshmem device not ready"); in eth_ivshmem_initialize()
279 uint16_t protocol = ivshmem_get_protocol(cfg_data->ivshmem); in eth_ivshmem_initialize()
282 LOG_ERR("Invalid ivshmem protocol %hu", protocol); in eth_ivshmem_initialize()
[all …]
DKconfig.ivshmem1 # IVSHMEM Ethernet driver configuration options
20 int "IVSHMEM Ethernet thread stack size"
24 int "IVSHMEM Ethernet thread priority"
/Zephyr-latest/dts/bindings/mbox/
Dlinaro,ivshmem-mbox.yaml6 compatible: "linaro,ivshmem-mbox"
12 ivshmem:
15 description: ivshmem device node
/Zephyr-latest/samples/drivers/ethernet/eth_ivshmem/boards/
Dqemu_cortex_a53.overlay37 compatible = "siemens,ivshmem-eth";
38 ivshmem-v2 = <&ivshmem0>;
45 ivshmem0: ivshmem@0 {
46 compatible = "qemu,ivshmem";
47 ivshmem-v2;
49 device-id = <0x4106>; /* IVSHMEM */
/Zephyr-latest/include/zephyr/drivers/virtualization/
Divshmem.h11 * @brief Inter-VM Shared Memory (ivshmem) reference API
12 * @defgroup ivshmem Inter-VM Shared Memory (ivshmem) reference API
87 * Note: This API is not supported for ivshmem-v2, as
89 * For ivshmem-v2, use the ivshmem_get_rw_mem_section,
197 * @brief Get the ivshmem read/write section (ivshmem-v2 only)
217 * @brief Get the ivshmem output section for a peer (ivshmem-v2 only)
240 * @brief Get the state value of a peer (ivshmem-v2 only)
260 * @brief Set our state (ivshmem-v2 only)
280 * @brief Get the maximum number of peers supported (ivshmem-v2 only)
297 * @brief Get the protocol used by this ivshmem instance (ivshmem-v2 only)
[all …]
/Zephyr-latest/samples/drivers/virtualization/ivshmem/doorbell/src/
Divshmem.c8 /* we piggyback the log level using ivshmem knob */
22 #include <zephyr/drivers/virtualization/ivshmem.h>
27 * Using the ivshmem API, we will receive a signal event + two integers (the
28 * interrupt itself is dealt in the internal ivshmem driver api)
40 /* virtual address to access shared memory of ivshmem */
44 /* my id for ivshmem protocol */
65 /* signal structure necessary for ivshmem API */
110 printf("Use write_shared_memory.sh and ivshmem-client to send a message\n"); in ivshmem_event_loop()
134 * setup ivshmem parameters
145 printf("Could not get ivshmem device\n"); in setup_ivshmem()
[all …]
/Zephyr-latest/samples/drivers/ipm/ipm_ivshmem/boards/
Dqemu_cortex_a53.overlay10 compatible = "linaro,ivshmem-ipm";
11 ivshmem = <&ivshmem0>;
Dpcie_ivshmem.dtsi10 ivshmem0: ivshmem {
11 compatible = "qemu,ivshmem";
/Zephyr-latest/samples/drivers/virtualization/ivshmem/doorbell/boards/
Dpcie_ivshmem.dtsi10 ivshmem0: ivshmem {
11 compatible = "qemu,ivshmem";
/Zephyr-latest/tests/drivers/virtualization/ivshmem/plain/boards/
Dpcie_ivshmem.dtsi10 ivshmem0: ivshmem {
11 compatible = "qemu,ivshmem";

123