| vdpa net |
| ============ |
| |
| This document explains the setup and usage of the vdpa network device. |
| The vdpa network device is a paravirtualized vdpa emulate device. |
| |
| Description |
| ----------- |
| |
| VDPA net devices support dirty page bitmap mark and vring state saving and recovery. |
| |
| Users can use this VDPA device for live migration simulation testing in a nested virtualization environment. |
| |
| Registers layout |
| ---------------- |
| |
| The vdpa device add live migrate registers layout as follow:: |
| |
| Offset Register Name Bitwidth Associated vq |
| 0x0 LM_LOGGING_CTRL 4bits |
| 0x10 LM_BASE_ADDR_LOW 32bits |
| 0x14 LM_BASE_ADDR_HIGH 32bits |
| 0x18 LM_END_ADDR_LOW 32bits |
| 0x1c LM_END_ADDR_HIGH 32bits |
| 0x20 LM_RING_STATE_OFFSET 32bits vq0 |
| 0x24 LM_RING_STATE_OFFSET 32bits vq1 |
| 0x28 LM_RING_STATE_OFFSET 32bits vq2 |
| ...... |
| 0x20+1023*4 LM_RING_STATE_OFFSET 32bits vq1023 |
| |
| These registers are extended at the end of the notify bar space. |
| |
| Architecture diagram |
| -------------------- |
| :: |
| |
| |------------------------------------------------------------------------| |
| | guest-L1-user-space | |
| | | |
| | |----------------------------------------| |
| | | [virtio-net driver] | |
| | | ^ guest-L2-src(iommu=on) | |
| | |--------------|-------------------------| |
| | | | qemu-L2-src(viommu) | |
| | [dpdk-vdpa]<->[vhost socket]<-+->[vhost-user backend(iommu=on)] | |
| -------------------------------------------------------------------------- |
| -------------------------------------------------------------------------- |
| | ^ guest-L1-kernel-space | |
| | | | |
| | [VFIO] | |
| | ^ | |
| | | guest-L1-src(iommu=on) | |
| --------|----------------------------------------------------------------- |
| --------|----------------------------------------------------------------- |
| | [vdpa net device(iommu=on)] [manager nic device] | |
| | | | | |
| | | | | |
| | [tap device] qemu-L1-src(viommu) | | |
| ------------------------------------------------+------------------------- |
| | |
| | |
| --------------------- | |
| | kernel net bridge |<----- |
| | virbr0 |<---------------------------------- |
| --------------------- | |
| | |
| | |
| -------------------------------------------------------------------------- | |
| | guest-L1-user-space | | |
| | | | |
| | |----------------------------------------| | |
| | | [virtio-net driver] | | |
| | | ^ guest-L2-dst(iommu=on) | | |
| | |--------------|-------------------------| | |
| | | | qemu-L2-dst(viommu) | | |
| | [dpdk-vdpa]<->[vhost socket]<-+->[vhost-user backend(iommu=on)] | | |
| -------------------------------------------------------------------------- | |
| -------------------------------------------------------------------------- | |
| | ^ guest-L1-kernel-space | | |
| | | | | |
| | [VFIO] | | |
| | ^ | | |
| | | guest-L1-dst(iommu=on) | | |
| --------|----------------------------------------------------------------- | |
| --------|----------------------------------------------------------------- | |
| | [vdpa net device(iommu=on)] [manager nic device]----------------+---- |
| | | | |
| | | | |
| | [tap device] qemu-L1-dst(viommu) | |
| -------------------------------------------------------------------------- |
| |
| |
| Device properties |
| ----------------- |
| |
| The Virtio vdpa device can be configured with the following properties: |
| |
| * ``vdpa=on`` open vdpa device emulated. |
| |
| Usages |
| -------- |
| This patch add virtio sriov support and vdpa live migrate support. |
| You can open vdpa by set xml file as follow:: |
| |
| <qemu:commandline xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> |
| <qemu:arg value='-device'/> |
| <qemu:arg value='intel-iommu,intremap=on,device-iotlb=on,aw-bits=48'/> |
| <qemu:arg value='-netdev'/> |
| <qemu:arg value='tap,id=hostnet1,script=no,downscript=no,vhost=off'/> |
| <qemu:arg value='-device'/> |
| <qemu:arg value='virtio-net-pci,netdev=hostnet1,id=net1,mac=56:4a:b7:4f:4d:a9,bus=pci.6,addr=0x0,iommu_platform=on,ats=on,vdpa=on'/> |
| </qemu:commandline> |
| |
| Limitations |
| ----------- |
| 1. Dependent on tap device with param ``vhost=off``. |
| 2. Nested virtualization environment only supports ``q35`` machines. |
| 3. Current only support split vring live migrate. |
| |
| |
| |