mbox series

[0/4] Vhost-vdpa Shadow Virtqueue VLAN support

Message ID cover.1689690854.git.yin31149@gmail.com (mailing list archive)
Headers show
Series Vhost-vdpa Shadow Virtqueue VLAN support | expand

Message

Hawkins Jiawei July 19, 2023, 7:47 a.m. UTC
This series enables shadowed CVQ to intercept VLAN commands
through shadowed CVQ, update the virtio NIC device model
so qemu send it in a migration, and the restore of that
VLAN state in the destination.

TestStep
========
1. test the migration using vp-vdpa device
  - For L0 guest, boot QEMU with two virtio-net-pci net device with
`ctrl_vq`, `ctrl_vlan` features on, command line like:
      -device virtio-net-pci,disable-legacy=on,disable-modern=off,
iommu_platform=on,mq=on,ctrl_vq=on,guest_announce=off,
indirect_desc=off,queue_reset=off,ctrl_vlan=on,...

  - For L1 guest, apply the patch series and compile the source code,
start QEMU with two vdpa device with svq mode on, enable the `ctrl_vq`,
`ctrl_vlan` features on, command line like:
      -netdev type=vhost-vdpa,x-svq=true,...
      -device virtio-net-pci,mq=on,guest_announce=off,ctrl_vq=on,
ctrl_vlan=on,...

  - For L2 source guest, run the following bash command:
```bash
#!/bin/sh

for idx in {1..4094}
do
  ip link add link eth0 name vlan$idx type vlan id $idx
done
```

  - gdb attaches the L2 dest VM and break at the
vhost_vdpa_net_load_single_vlan(), and execute the following
gdbscript
```gdbscript
ignore 1 4094
c
```

  - 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.

Eugenio Pérez (1):
  virtio-net: do not reset vlan filtering at set_features

Hawkins Jiawei (3):
  virtio-net: Expose MAX_VLAN
  vdpa: Restore vlan filtering state
  vdpa: Allow VIRTIO_NET_F_CTRL_VLAN in SVQ

 hw/net/virtio-net.c            |  6 +---
 include/hw/virtio/virtio-net.h |  6 ++++
 net/vhost-vdpa.c               | 50 ++++++++++++++++++++++++++++++++++
 3 files changed, 57 insertions(+), 5 deletions(-)

Comments

Hawkins Jiawei July 19, 2023, 10:53 a.m. UTC | #1
在 2023/7/19 15:47, Hawkins Jiawei 写道:
> This series enables shadowed CVQ to intercept VLAN commands
> through shadowed CVQ, update the virtio NIC device model
> so qemu send it in a migration, and the restore of that
> VLAN state in the destination.

This patch series is based on
"[PATCH 0/3] Vhost-vdpa Shadow Virtqueue VLAN support" at [1],
with these changes:

  - move `MAX_VLAN` macro to include/hw/virtio/virtio-net.h
instead of net/vhost-vdpa.c
  - fix conflicts with the master branch

Thanks!

[1]. https://lists.gnu.org/archive/html/qemu-devel/2022-09/msg01016.html


>
> TestStep
> ========
> 1. test the migration using vp-vdpa device
>    - For L0 guest, boot QEMU with two virtio-net-pci net device with
> `ctrl_vq`, `ctrl_vlan` features on, command line like:
>        -device virtio-net-pci,disable-legacy=on,disable-modern=off,
> iommu_platform=on,mq=on,ctrl_vq=on,guest_announce=off,
> indirect_desc=off,queue_reset=off,ctrl_vlan=on,...
>
>    - For L1 guest, apply the patch series and compile the source code,
> start QEMU with two vdpa device with svq mode on, enable the `ctrl_vq`,
> `ctrl_vlan` features on, command line like:
>        -netdev type=vhost-vdpa,x-svq=true,...
>        -device virtio-net-pci,mq=on,guest_announce=off,ctrl_vq=on,
> ctrl_vlan=on,...
>
>    - For L2 source guest, run the following bash command:
> ```bash
> #!/bin/sh
>
> for idx in {1..4094}
> do
>    ip link add link eth0 name vlan$idx type vlan id $idx
> done
> ```
>
>    - gdb attaches the L2 dest VM and break at the
> vhost_vdpa_net_load_single_vlan(), and execute the following
> gdbscript
> ```gdbscript
> ignore 1 4094
> c
> ```
>
>    - 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.
>
> Eugenio Pérez (1):
>    virtio-net: do not reset vlan filtering at set_features
>
> Hawkins Jiawei (3):
>    virtio-net: Expose MAX_VLAN
>    vdpa: Restore vlan filtering state
>    vdpa: Allow VIRTIO_NET_F_CTRL_VLAN in SVQ
>
>   hw/net/virtio-net.c            |  6 +---
>   include/hw/virtio/virtio-net.h |  6 ++++
>   net/vhost-vdpa.c               | 50 ++++++++++++++++++++++++++++++++++
>   3 files changed, 57 insertions(+), 5 deletions(-)
>
Lei Yang July 20, 2023, 9:02 a.m. UTC | #2
QE tested this series patch with real hardware, it can support setup
vlan for the nic, and the vlan id still can be found after finished
migrate. In addition, this series patch also help to test another
patch, can got the expect result.

Tested-by: Lei Yang <leiyang@redhat.com>

On Wed, Jul 19, 2023 at 6:54 PM Hawkins Jiawei <yin31149@gmail.com> wrote:
>
> 在 2023/7/19 15:47, Hawkins Jiawei 写道:
> > This series enables shadowed CVQ to intercept VLAN commands
> > through shadowed CVQ, update the virtio NIC device model
> > so qemu send it in a migration, and the restore of that
> > VLAN state in the destination.
>
> This patch series is based on
> "[PATCH 0/3] Vhost-vdpa Shadow Virtqueue VLAN support" at [1],
> with these changes:
>
>   - move `MAX_VLAN` macro to include/hw/virtio/virtio-net.h
> instead of net/vhost-vdpa.c
>   - fix conflicts with the master branch
>
> Thanks!
>
> [1]. https://lists.gnu.org/archive/html/qemu-devel/2022-09/msg01016.html
>
>
> >
> > TestStep
> > ========
> > 1. test the migration using vp-vdpa device
> >    - For L0 guest, boot QEMU with two virtio-net-pci net device with
> > `ctrl_vq`, `ctrl_vlan` features on, command line like:
> >        -device virtio-net-pci,disable-legacy=on,disable-modern=off,
> > iommu_platform=on,mq=on,ctrl_vq=on,guest_announce=off,
> > indirect_desc=off,queue_reset=off,ctrl_vlan=on,...
> >
> >    - For L1 guest, apply the patch series and compile the source code,
> > start QEMU with two vdpa device with svq mode on, enable the `ctrl_vq`,
> > `ctrl_vlan` features on, command line like:
> >        -netdev type=vhost-vdpa,x-svq=true,...
> >        -device virtio-net-pci,mq=on,guest_announce=off,ctrl_vq=on,
> > ctrl_vlan=on,...
> >
> >    - For L2 source guest, run the following bash command:
> > ```bash
> > #!/bin/sh
> >
> > for idx in {1..4094}
> > do
> >    ip link add link eth0 name vlan$idx type vlan id $idx
> > done
> > ```
> >
> >    - gdb attaches the L2 dest VM and break at the
> > vhost_vdpa_net_load_single_vlan(), and execute the following
> > gdbscript
> > ```gdbscript
> > ignore 1 4094
> > c
> > ```
> >
> >    - 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.
> >
> > Eugenio Pérez (1):
> >    virtio-net: do not reset vlan filtering at set_features
> >
> > Hawkins Jiawei (3):
> >    virtio-net: Expose MAX_VLAN
> >    vdpa: Restore vlan filtering state
> >    vdpa: Allow VIRTIO_NET_F_CTRL_VLAN in SVQ
> >
> >   hw/net/virtio-net.c            |  6 +---
> >   include/hw/virtio/virtio-net.h |  6 ++++
> >   net/vhost-vdpa.c               | 50 ++++++++++++++++++++++++++++++++++
> >   3 files changed, 57 insertions(+), 5 deletions(-)
> >
>