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] (current) 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|}} | ||