/Zephyr-latest/drivers/virtualization/ |
D | Kconfig | 15 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 …]
|
D | virt_ivshmem_shell.c | 9 #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 …]
|
D | virt_ivshmem.c | 11 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/ |
D | ivshmem.c | 10 #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/ |
D | README.rst | 1 .. 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/ |
D | README.rst | 1 .. 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 …]
|
D | sample.yaml | 2 description: ivshmem-doorbell sample application 5 sample.virtualization.ivshmem.doorbell.arm64: 12 - ivshmem 13 sample.virtualization.ivshmem.doorbell.x64: 18 - ivshmem
|
D | write_shared_memory.sh | 2 # 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/ |
D | Kconfig.ivshmem | 5 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/ |
D | ivshmem.rst | 17 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/ |
D | qemu,ivshmem.yaml | 4 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/ |
D | linaro,ivshmem-ipm.yaml | 4 description: Inter processor message based on IVSHMEM 6 compatible: "linaro,ivshmem-ipm" 12 ivshmem: 15 description: ivshmem device node
|
/Zephyr-latest/dts/bindings/ethernet/ |
D | siemens,ivshmem-eth.yaml | 4 description: IVSHMEM Ethernet 6 compatible: "siemens,ivshmem-eth" 12 ivshmem-v2: 15 description: ivshmem-v2 driver node
|
/Zephyr-latest/drivers/ipm/ |
D | Kconfig.ivshmem | 7 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.
|
D | Kconfig | 42 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/ |
D | eth_ivshmem.c | 9 #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 …]
|
D | Kconfig.ivshmem | 1 # IVSHMEM Ethernet driver configuration options 20 int "IVSHMEM Ethernet thread stack size" 24 int "IVSHMEM Ethernet thread priority"
|
/Zephyr-latest/dts/bindings/mbox/ |
D | linaro,ivshmem-mbox.yaml | 6 compatible: "linaro,ivshmem-mbox" 12 ivshmem: 15 description: ivshmem device node
|
/Zephyr-latest/samples/drivers/ethernet/eth_ivshmem/boards/ |
D | qemu_cortex_a53.overlay | 37 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/ |
D | ivshmem.h | 11 * @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/ |
D | ivshmem.c | 8 /* 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/ |
D | qemu_cortex_a53.overlay | 10 compatible = "linaro,ivshmem-ipm"; 11 ivshmem = <&ivshmem0>;
|
D | pcie_ivshmem.dtsi | 10 ivshmem0: ivshmem { 11 compatible = "qemu,ivshmem";
|
/Zephyr-latest/samples/drivers/virtualization/ivshmem/doorbell/boards/ |
D | pcie_ivshmem.dtsi | 10 ivshmem0: ivshmem { 11 compatible = "qemu,ivshmem";
|
/Zephyr-latest/tests/drivers/virtualization/ivshmem/plain/boards/ |
D | pcie_ivshmem.dtsi | 10 ivshmem0: ivshmem { 11 compatible = "qemu,ivshmem";
|