This series enables shadowed CVQ to intercept RSS command
through shadowed CVQ, update the virtio NIC device model
so qemu send it in a migration, and the restore of that
RSS state in the destination.
Note that this patch should be based on
patch "Vhost-vdpa Shadow Virtqueue Hash calculation Support" at [1].
[1]. https://lore.kernel.org/all/cover.1698194366.git.yin31149@gmail.com/
ChangeLog
=========
v5:
- resolve conflict with the updated patch
"Vhost-vdpa Shadow Virtqueue Hash calculation Support" at [1]
v4: https://lore.kernel.org/all/cover.1697904740.git.yin31149@gmail.com/
- add do_rss argument and relative code in vhost_vdpa_net_load_rss()
v3: https://lore.kernel.org/all/cover.1693299194.git.yin31149@gmail.com/
- resolve conflict with updated patch
"Vhost-vdpa Shadow Virtqueue Hash calculation Support" in patch
"vdpa: Restore receive-side scaling state"
RFC v2: https://lore.kernel.org/all/cover.1691926415.git.yin31149@gmail.com/
- Correct the feature usage to VIRTIO_NET_F_HASH_REPORT when
loading the hash calculation state in
patch "vdpa: Restore receive-side scaling state"
RFC v1: https://lore.kernel.org/all/cover.1691766252.git.yin31149@gmail.com/
TestStep
========
1. regression testing using vp-vdpa device
- For L0 guest, boot QEMU with two virtio-net-pci net device with
`ctrl_vq`, `mq`, `hash` features on, command line like:
-netdev tap,...
-device virtio-net-pci,disable-legacy=on,disable-modern=off,
iommu_platform=on,mq=on,ctrl_vq=on,hash=on,guest_announce=off,
indirect_desc=off,queue_reset=off,guest_uso4=off,guest_uso6=off,
host_uso=off,...
- For L1 guest, apply the relative patch series and compile the
source code, start QEMU with two vdpa device with svq mode on,
enable the `ctrl_vq`, `mq`, `hash` features on, command line like:
-netdev type=vhost-vdpa,x-svq=true,...
-device virtio-net-pci,mq=on,guest_announce=off,ctrl_vq=on,
hash=on,...
- For L2 source guest, run the following bash command:
```bash
#!/bin/sh
ethtool -K eth0 rxhash on
```
- Gdb attach the destination VM and break at the
vhost_vdpa_net_load_rss()
- Execute the live migration in L2 source monitor
- Result
* with this series, gdb can hit the breakpoint and continue
the executing without triggering any error or warning.
2. test the migration using vp-vdpa device
- For L0 guest, boot QEMU with two virtio-net-pci net device with
`in-qemu` RSS, command line like:
-netdev tap,vhost=off...
-device virtio-net-pci,disable-legacy=on,disable-modern=off,
iommu_platform=on,mq=on,ctrl_vq=on,hash=on,rss=on,guest_announce=off,
indirect_desc=off,queue_reset=off,guest_uso4=off,guest_uso6=off,
host_uso=off,...
- For L1 guest, apply the relative patch series and compile the
source code, start QEMU with two vdpa device with svq mode on,
enable the `ctrl_vq`, `mq`, `rss` features on, command line like:
-netdev type=vhost-vdpa,x-svq=true,...
-device virtio-net-pci,mq=on,guest_announce=off,ctrl_vq=on,
rss=on,...
- For L2 source guest, run the following bash command:
```bash
#!/bin/sh
ethtool -K eth0 rxhash on
```
- Execute the live migration in L2 source monitor
- Result
* with this series, L2 QEMU can execute without
triggering any error or warning. L0 QEMU echo
"Can't load eBPF RSS - fallback to software RSS".
Hawkins Jiawei (3):
vdpa: Add SetSteeringEBPF method for NetClientState
vdpa: Restore receive-side scaling state
vdpa: Allow VIRTIO_NET_F_RSS in SVQ
net/vhost-vdpa.c | 76 +++++++++++++++++++++++++++++++++---------------
1 file changed, 53 insertions(+), 23 deletions(-)
--
2.25.1