mbox series

[v4,0/6] Vhost-vdpa Shadow Virtqueue Offloads support

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

Message

Hawkins Jiawei June 2, 2023, 11:52 a.m. UTC
This series enables shadowed CVQ to intercept Offloads commands
through shadowed CVQ, update the virtio NIC device model so qemu
send it in a migration, and the restore of that Offloads state
in the destination.

Changelog
=========
v4:
  - refactor the commit message suggested by Eugenio in patch#4
"virtio-net: expose virtio_net_supported_guest_offloads()"
  - fix the wrong "cpu_to_le64()" pointed out by Eugenio in patch$5
"vdpa: Add vhost_vdpa_net_load_offloads()"
  - refactor the comment in patch#5
"vdpa: Add vhost_vdpa_net_load_offloads()"

v3: https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00206.html

v2: https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00044.html

v1: https://lists.nongnu.org/archive/html/qemu-devel/2023-05/msg07198.html

Hawkins Jiawei (6):
  include/hw/virtio: make some VirtIODevice const
  vdpa: reuse virtio_vdev_has_feature()
  hw/net/virtio-net: make some VirtIONet const
  virtio-net: expose virtio_net_supported_guest_offloads()
  vdpa: Add vhost_vdpa_net_load_offloads()
  vdpa: Allow VIRTIO_NET_F_CTRL_GUEST_OFFLOADS in SVQ

 hw/net/virtio-net.c            |  2 +-
 include/hw/virtio/virtio-net.h |  1 +
 include/hw/virtio/virtio.h     |  2 +-
 net/vhost-vdpa.c               | 49 +++++++++++++++++++++++++++++++---
 4 files changed, 48 insertions(+), 6 deletions(-)

Comments

Lei Yang June 2, 2023, 4:39 p.m. UTC | #1
QE tested this series v4 on the vp_vdpa device with the following
scenarios: reboot/shutdown, hotplug/unplug, nic driver load/unload,
ping, vDPA control virtqueue(changed the mac address), everything are
working fine. And L1 guest will not appear  error messages "vdpa svq
does not work with features 0x4" after applied this series of patches.

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


On Fri, Jun 2, 2023 at 7:55 PM Hawkins Jiawei <yin31149@gmail.com> wrote:
>
> This series enables shadowed CVQ to intercept Offloads commands
> through shadowed CVQ, update the virtio NIC device model so qemu
> send it in a migration, and the restore of that Offloads state
> in the destination.
>
> Changelog
> =========
> v4:
>   - refactor the commit message suggested by Eugenio in patch#4
> "virtio-net: expose virtio_net_supported_guest_offloads()"
>   - fix the wrong "cpu_to_le64()" pointed out by Eugenio in patch$5
> "vdpa: Add vhost_vdpa_net_load_offloads()"
>   - refactor the comment in patch#5
> "vdpa: Add vhost_vdpa_net_load_offloads()"
>
> v3: https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00206.html
>
> v2: https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00044.html
>
> v1: https://lists.nongnu.org/archive/html/qemu-devel/2023-05/msg07198.html
>
> Hawkins Jiawei (6):
>   include/hw/virtio: make some VirtIODevice const
>   vdpa: reuse virtio_vdev_has_feature()
>   hw/net/virtio-net: make some VirtIONet const
>   virtio-net: expose virtio_net_supported_guest_offloads()
>   vdpa: Add vhost_vdpa_net_load_offloads()
>   vdpa: Allow VIRTIO_NET_F_CTRL_GUEST_OFFLOADS in SVQ
>
>  hw/net/virtio-net.c            |  2 +-
>  include/hw/virtio/virtio-net.h |  1 +
>  include/hw/virtio/virtio.h     |  2 +-
>  net/vhost-vdpa.c               | 49 +++++++++++++++++++++++++++++++---
>  4 files changed, 48 insertions(+), 6 deletions(-)
>
> --
> 2.25.1
>
>
Eugenio Perez Martin June 2, 2023, 5:47 p.m. UTC | #2
On Fri, Jun 2, 2023 at 1:52 PM Hawkins Jiawei <yin31149@gmail.com> wrote:
>
> This series enables shadowed CVQ to intercept Offloads commands
> through shadowed CVQ, update the virtio NIC device model so qemu
> send it in a migration, and the restore of that Offloads state
> in the destination.
>
> Changelog
> =========
> v4:
>   - refactor the commit message suggested by Eugenio in patch#4
> "virtio-net: expose virtio_net_supported_guest_offloads()"
>   - fix the wrong "cpu_to_le64()" pointed out by Eugenio in patch$5
> "vdpa: Add vhost_vdpa_net_load_offloads()"
>   - refactor the comment in patch#5
> "vdpa: Add vhost_vdpa_net_load_offloads()"
>
> v3: https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00206.html
>
> v2: https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00044.html
>
> v1: https://lists.nongnu.org/archive/html/qemu-devel/2023-05/msg07198.html
>

Please keep all the v2, v3 etc changes here too. A reviewer may see
this newly from an older revision.

Apart from that,
Reviewed-by: Eugenio Pérez <eperezma@redhat.com>
Tested-by: Eugenio Pérez <eperezma@redhat.com>

I tested it by tracing the value it sends at destination when the
guest enable or disable hw GRO offloads with:
ethtool -K rx-gro-hw off.

As you point in previous series, a migration blocker needs to be
conditionally added. This is done in [1].

While investigating this I discovered two related issues, it might be
in handy if other reviewer wants to test the changes [2][3].

Thanks!

[1] https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00512.html
[2] https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00601.html
[3] https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00604.html

> Hawkins Jiawei (6):
>   include/hw/virtio: make some VirtIODevice const
>   vdpa: reuse virtio_vdev_has_feature()
>   hw/net/virtio-net: make some VirtIONet const
>   virtio-net: expose virtio_net_supported_guest_offloads()
>   vdpa: Add vhost_vdpa_net_load_offloads()
>   vdpa: Allow VIRTIO_NET_F_CTRL_GUEST_OFFLOADS in SVQ
>
>  hw/net/virtio-net.c            |  2 +-
>  include/hw/virtio/virtio-net.h |  1 +
>  include/hw/virtio/virtio.h     |  2 +-
>  net/vhost-vdpa.c               | 49 +++++++++++++++++++++++++++++++---
>  4 files changed, 48 insertions(+), 6 deletions(-)
>
> --
> 2.25.1
>
Hawkins Jiawei June 3, 2023, 7:18 a.m. UTC | #3
On 2023/6/3 1:47, Eugenio Perez Martin wrote:
> On Fri, Jun 2, 2023 at 1:52 PM Hawkins Jiawei <yin31149@gmail.com> wrote:
>>
>> This series enables shadowed CVQ to intercept Offloads commands
>> through shadowed CVQ, update the virtio NIC device model so qemu
>> send it in a migration, and the restore of that Offloads state
>> in the destination.
>>
>> Changelog
>> =========
>> v4:
>>    - refactor the commit message suggested by Eugenio in patch#4
>> "virtio-net: expose virtio_net_supported_guest_offloads()"
>>    - fix the wrong "cpu_to_le64()" pointed out by Eugenio in patch$5
>> "vdpa: Add vhost_vdpa_net_load_offloads()"
>>    - refactor the comment in patch#5
>> "vdpa: Add vhost_vdpa_net_load_offloads()"
>>
>> v3: https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00206.html
>>
>> v2: https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00044.html
>>
>> v1: https://lists.nongnu.org/archive/html/qemu-devel/2023-05/msg07198.html
>>
>
> Please keep all the v2, v3 etc changes here too. A reviewer may see
> this newly from an older revision.

Thank you for the reminder, I will include all change log in the
upcoming patches.

>
> Apart from that,
> Reviewed-by: Eugenio Pérez <eperezma@redhat.com>
> Tested-by: Eugenio Pérez <eperezma@redhat.com>
>
> I tested it by tracing the value it sends at destination when the
> guest enable or disable hw GRO offloads with:
> ethtool -K rx-gro-hw off.
>
> As you point in previous series, a migration blocker needs to be
> conditionally added. This is done in [1].
>
> While investigating this I discovered two related issues, it might be
> in handy if other reviewer wants to test the changes [2][3].
>
> Thanks!
>
> [1] https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00512.html
> [2] https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00601.html
> [3] https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg00604.html

Thanks for your explanation!


>
>> Hawkins Jiawei (6):
>>    include/hw/virtio: make some VirtIODevice const
>>    vdpa: reuse virtio_vdev_has_feature()
>>    hw/net/virtio-net: make some VirtIONet const
>>    virtio-net: expose virtio_net_supported_guest_offloads()
>>    vdpa: Add vhost_vdpa_net_load_offloads()
>>    vdpa: Allow VIRTIO_NET_F_CTRL_GUEST_OFFLOADS in SVQ
>>
>>   hw/net/virtio-net.c            |  2 +-
>>   include/hw/virtio/virtio-net.h |  1 +
>>   include/hw/virtio/virtio.h     |  2 +-
>>   net/vhost-vdpa.c               | 49 +++++++++++++++++++++++++++++++---
>>   4 files changed, 48 insertions(+), 6 deletions(-)
>>
>> --
>> 2.25.1
>>
>