This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
vm2vm_mst [2015/09/03 04:30] Jun Nakajima |
vm2vm_mst [2015/09/03 04:33] Jun Nakajima |
||
---|---|---|---|
Line 19: | Line 19: | ||
How is this mechanism used for inter-VM communication? It should be straightforward. Take a look at a simple example where VM1 receives data from VM2. For example, DPDK runs in VM2, forwarding packets to VM1. | How is this mechanism used for inter-VM communication? It should be straightforward. Take a look at a simple example where VM1 receives data from VM2. For example, DPDK runs in VM2, forwarding packets to VM1. | ||
- | In VM1 the device driver uses polling to keep DMA operations of **R** open, looking at the "**bus address**" (the step number should match with the one in the figure): | + | In VM1 the device driver uses polling to keep DMA operations of **R** open, looking at the "**bus address**" (the step numbers below should match with the one in the figure): |
- For performance reasons, the buffer addresses would be static or covered by larger regions that are mapped by virtual IOMMU. The mapping is determined and established by VM1. | - For performance reasons, the buffer addresses would be static or covered by larger regions that are mapped by virtual IOMMU. The mapping is determined and established by VM1. | ||
- QEMU of VM1 communicates the configuration of virtual IOMMU to QEMU of VM2. This would require extensions to the vhost-user protocol. | - QEMU of VM1 communicates the configuration of virtual IOMMU to QEMU of VM2. This would require extensions to the vhost-user protocol. | ||
- The vhost-pci (implemented by the extension) sets BAR in VM2. | - The vhost-pci (implemented by the extension) sets BAR in VM2. | ||
- A process (e.g. DPDK) or kernel in VM2 accesses BAR + (**bus address**) in its GPA to copy data to VM1. This operation can be done by data-copying or DMA (by SR-IOV VFs, for example). | - A process (e.g. DPDK) or kernel in VM2 accesses BAR + (**bus address**) in its GPA to copy data to VM1. This operation can be done by data-copying or DMA (by SR-IOV VFs, for example). | ||
- | - The mapping from the **bus address** to GPA in VM1 is done by virtual IOMMU configure for the device R. | + | - The mapping from the **bus address** to GPA in VM1 is done by virtual IOMMU configured for the device **R**. |
{{:vm2vm_mst.png|}} | {{:vm2vm_mst.png|}} |