mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-29 13:23:54 -06:00

This patch adds support for VDPA network simulation devices. The device is developed based on virtio-net and tap backend, and supports hardware live migration function. For more details, please refer to "docs/system/devices/vdpa-net.rst" Signed-off-by: Hao Chen <chenh@yusur.tech> Message-Id: <20240221073802.2888022-1-chenh@yusur.tech> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
121 lines
6.1 KiB
ReStructuredText
121 lines
6.1 KiB
ReStructuredText
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.
|
|
|
|
|
|
|