[PATCH 00/16] Support VIRTIO_F_RING_RESET for virtio-net and vhost-user in virtio pci

Kangjie Xu posted 16 patches 3 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/cover.1658141552.git.kangjie.xu@linux.alibaba.com
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>
hw/net/vhost_net.c                            | 56 ++++++++++++++++++
hw/net/virtio-net.c                           | 40 +++++++++++++
hw/virtio/vhost-user.c                        | 55 +++++++++++++++---
hw/virtio/vhost.c                             | 49 ++++++++++++++--
hw/virtio/virtio-pci.c                        | 17 ++++++
hw/virtio/virtio.c                            | 57 +++++++++++++------
include/hw/virtio/vhost-backend.h             |  4 ++
include/hw/virtio/vhost.h                     |  6 ++
include/hw/virtio/virtio-pci.h                |  1 +
include/hw/virtio/virtio.h                    |  4 ++
include/net/vhost_net.h                       |  5 ++
.../standard-headers/linux/virtio_config.h    |  5 ++
include/standard-headers/linux/virtio_pci.h   |  4 ++
13 files changed, 274 insertions(+), 29 deletions(-)
[PATCH 00/16] Support VIRTIO_F_RING_RESET for virtio-net and vhost-user in virtio pci
Posted by Kangjie Xu 3 years, 6 months ago
The virtio queue reset function has already been defined in the virtio spec 1.2.
The relevant virtio spec information is here:

    https://github.com/oasis-tcs/virtio-spec/issues/124
    https://github.com/oasis-tcs/virtio-spec/issues/139

This patch set is to support this function in QEMU. It consists of two parts: virtio-net
and vhost-user. The patches 1-7 are the implementation for virtio-net and the patches
8-16 are for vhost-user. 

The process of virt queue reset can be concluded as:
1. The virtqueue is disabled when VIRTIO_PCI_COMMON_Q_RESET is written.
2. Then the virtqueue is restarted after the information of vrings is passed to QEMU and
VIRTIO_PCI_COMMON_Q_ENABLE is written.

Test environment:
    Host: 5.4.189
    Qemu: QEMU emulator version 7.0.50
    Guest: 5.19.0-rc3 (With vq reset support)
    DPDK: 22.07-rc1 (With vq reset support)
    Test Cmd: ethtool -g eth1; ethtool -G eth1 rx $1 tx $2; ethtool -g eth1;

    The frontend can resize the virtio queue, then virtio queue reset function should
    be triggered.

    The default is split mode, modify Qemu virtio-net to add PACKED feature to 
    test packed mode.

Guest Kernel Patch:
    https://lore.kernel.org/bpf/20220629065656.54420-1-xuanzhuo@linux.alibaba.com/

DPDK Code:
    https://github.com/middaywords/dpdk/commit/098c8e1dfae10b747da8dd8950a82890efca7bee

Please review. Thanks.

Kangjie Xu (9):
  vhost: add op to enable or disable a single vring
  vhost-user: enable/disable a single vring
  vhost: extract the logic of unmapping the vrings and desc
  vhost: introduce restart and release for vhost_dev's vqs
  vhost-net: introduce restart and stop for vhost_net's vqs
  virtio: introduce queue_enable in virtio
  virtio-net: support queue_enable for vhost-user
  virtio-net: support queue_reset for vhost-user
  vhost-net: vq reset feature bit support

Xuan Zhuo (7):
  virtio-pci: virtio_pci_common_cfg add queue_notify_data
  virtio: add VIRTIO_F_RING_RESET
  virtio: pci: virtio_pci_common_cfg add queue_reset
  virtio: introduce __virtio_queue_reset()
  virtio: introduce virtio_queue_reset()
  virtio-pci: support queue reset
  virtio-net: support queue reset

 hw/net/vhost_net.c                            | 56 ++++++++++++++++++
 hw/net/virtio-net.c                           | 40 +++++++++++++
 hw/virtio/vhost-user.c                        | 55 +++++++++++++++---
 hw/virtio/vhost.c                             | 49 ++++++++++++++--
 hw/virtio/virtio-pci.c                        | 17 ++++++
 hw/virtio/virtio.c                            | 57 +++++++++++++------
 include/hw/virtio/vhost-backend.h             |  4 ++
 include/hw/virtio/vhost.h                     |  6 ++
 include/hw/virtio/virtio-pci.h                |  1 +
 include/hw/virtio/virtio.h                    |  4 ++
 include/net/vhost_net.h                       |  5 ++
 .../standard-headers/linux/virtio_config.h    |  5 ++
 include/standard-headers/linux/virtio_pci.h   |  4 ++
 13 files changed, 274 insertions(+), 29 deletions(-)

-- 
2.32.0
Re: [PATCH 00/16] Support VIRTIO_F_RING_RESET for virtio-net and vhost-user in virtio pci
Posted by Kangjie Xu 3 years, 6 months ago
Do you have any comments or suggestions about improvements to this patch 
set?


Regards,

Kangjie

在 2022/7/18 19:16, Kangjie Xu 写道:
> The virtio queue reset function has already been defined in the virtio spec 1.2.
> The relevant virtio spec information is here:
>
>      https://github.com/oasis-tcs/virtio-spec/issues/124
>      https://github.com/oasis-tcs/virtio-spec/issues/139
>
> This patch set is to support this function in QEMU. It consists of two parts: virtio-net
> and vhost-user. The patches 1-7 are the implementation for virtio-net and the patches
> 8-16 are for vhost-user.
>
> The process of virt queue reset can be concluded as:
> 1. The virtqueue is disabled when VIRTIO_PCI_COMMON_Q_RESET is written.
> 2. Then the virtqueue is restarted after the information of vrings is passed to QEMU and
> VIRTIO_PCI_COMMON_Q_ENABLE is written.
>
> Test environment:
>      Host: 5.4.189
>      Qemu: QEMU emulator version 7.0.50
>      Guest: 5.19.0-rc3 (With vq reset support)
>      DPDK: 22.07-rc1 (With vq reset support)
>      Test Cmd: ethtool -g eth1; ethtool -G eth1 rx $1 tx $2; ethtool -g eth1;
>
>      The frontend can resize the virtio queue, then virtio queue reset function should
>      be triggered.
>
>      The default is split mode, modify Qemu virtio-net to add PACKED feature to
>      test packed mode.
>
> Guest Kernel Patch:
>      https://lore.kernel.org/bpf/20220629065656.54420-1-xuanzhuo@linux.alibaba.com/
>
> DPDK Code:
>      https://github.com/middaywords/dpdk/commit/098c8e1dfae10b747da8dd8950a82890efca7bee
>
> Please review. Thanks.
>
> Kangjie Xu (9):
>    vhost: add op to enable or disable a single vring
>    vhost-user: enable/disable a single vring
>    vhost: extract the logic of unmapping the vrings and desc
>    vhost: introduce restart and release for vhost_dev's vqs
>    vhost-net: introduce restart and stop for vhost_net's vqs
>    virtio: introduce queue_enable in virtio
>    virtio-net: support queue_enable for vhost-user
>    virtio-net: support queue_reset for vhost-user
>    vhost-net: vq reset feature bit support
>
> Xuan Zhuo (7):
>    virtio-pci: virtio_pci_common_cfg add queue_notify_data
>    virtio: add VIRTIO_F_RING_RESET
>    virtio: pci: virtio_pci_common_cfg add queue_reset
>    virtio: introduce __virtio_queue_reset()
>    virtio: introduce virtio_queue_reset()
>    virtio-pci: support queue reset
>    virtio-net: support queue reset
>
>   hw/net/vhost_net.c                            | 56 ++++++++++++++++++
>   hw/net/virtio-net.c                           | 40 +++++++++++++
>   hw/virtio/vhost-user.c                        | 55 +++++++++++++++---
>   hw/virtio/vhost.c                             | 49 ++++++++++++++--
>   hw/virtio/virtio-pci.c                        | 17 ++++++
>   hw/virtio/virtio.c                            | 57 +++++++++++++------
>   include/hw/virtio/vhost-backend.h             |  4 ++
>   include/hw/virtio/vhost.h                     |  6 ++
>   include/hw/virtio/virtio-pci.h                |  1 +
>   include/hw/virtio/virtio.h                    |  4 ++
>   include/net/vhost_net.h                       |  5 ++
>   .../standard-headers/linux/virtio_config.h    |  5 ++
>   include/standard-headers/linux/virtio_pci.h   |  4 ++
>   13 files changed, 274 insertions(+), 29 deletions(-)
>

Re: [PATCH 00/16] Support VIRTIO_F_RING_RESET for virtio-net and vhost-user in virtio pci
Posted by Jason Wang 3 years, 6 months ago
On Mon, Jul 25, 2022 at 10:34 AM Kangjie Xu
<kangjie.xu@linux.alibaba.com> wrote:
>
> Do you have any comments or suggestions about improvements to this patch
> set?

Will have a look and give feedback no later than the end of this week.

Thanks

>
>
> Regards,
>
> Kangjie
>
> 在 2022/7/18 19:16, Kangjie Xu 写道:
> > The virtio queue reset function has already been defined in the virtio spec 1.2.
> > The relevant virtio spec information is here:
> >
> >      https://github.com/oasis-tcs/virtio-spec/issues/124
> >      https://github.com/oasis-tcs/virtio-spec/issues/139
> >
> > This patch set is to support this function in QEMU. It consists of two parts: virtio-net
> > and vhost-user. The patches 1-7 are the implementation for virtio-net and the patches
> > 8-16 are for vhost-user.
> >
> > The process of virt queue reset can be concluded as:
> > 1. The virtqueue is disabled when VIRTIO_PCI_COMMON_Q_RESET is written.
> > 2. Then the virtqueue is restarted after the information of vrings is passed to QEMU and
> > VIRTIO_PCI_COMMON_Q_ENABLE is written.
> >
> > Test environment:
> >      Host: 5.4.189
> >      Qemu: QEMU emulator version 7.0.50
> >      Guest: 5.19.0-rc3 (With vq reset support)
> >      DPDK: 22.07-rc1 (With vq reset support)
> >      Test Cmd: ethtool -g eth1; ethtool -G eth1 rx $1 tx $2; ethtool -g eth1;
> >
> >      The frontend can resize the virtio queue, then virtio queue reset function should
> >      be triggered.
> >
> >      The default is split mode, modify Qemu virtio-net to add PACKED feature to
> >      test packed mode.
> >
> > Guest Kernel Patch:
> >      https://lore.kernel.org/bpf/20220629065656.54420-1-xuanzhuo@linux.alibaba.com/
> >
> > DPDK Code:
> >      https://github.com/middaywords/dpdk/commit/098c8e1dfae10b747da8dd8950a82890efca7bee
> >
> > Please review. Thanks.
> >
> > Kangjie Xu (9):
> >    vhost: add op to enable or disable a single vring
> >    vhost-user: enable/disable a single vring
> >    vhost: extract the logic of unmapping the vrings and desc
> >    vhost: introduce restart and release for vhost_dev's vqs
> >    vhost-net: introduce restart and stop for vhost_net's vqs
> >    virtio: introduce queue_enable in virtio
> >    virtio-net: support queue_enable for vhost-user
> >    virtio-net: support queue_reset for vhost-user
> >    vhost-net: vq reset feature bit support
> >
> > Xuan Zhuo (7):
> >    virtio-pci: virtio_pci_common_cfg add queue_notify_data
> >    virtio: add VIRTIO_F_RING_RESET
> >    virtio: pci: virtio_pci_common_cfg add queue_reset
> >    virtio: introduce __virtio_queue_reset()
> >    virtio: introduce virtio_queue_reset()
> >    virtio-pci: support queue reset
> >    virtio-net: support queue reset
> >
> >   hw/net/vhost_net.c                            | 56 ++++++++++++++++++
> >   hw/net/virtio-net.c                           | 40 +++++++++++++
> >   hw/virtio/vhost-user.c                        | 55 +++++++++++++++---
> >   hw/virtio/vhost.c                             | 49 ++++++++++++++--
> >   hw/virtio/virtio-pci.c                        | 17 ++++++
> >   hw/virtio/virtio.c                            | 57 +++++++++++++------
> >   include/hw/virtio/vhost-backend.h             |  4 ++
> >   include/hw/virtio/vhost.h                     |  6 ++
> >   include/hw/virtio/virtio-pci.h                |  1 +
> >   include/hw/virtio/virtio.h                    |  4 ++
> >   include/net/vhost_net.h                       |  5 ++
> >   .../standard-headers/linux/virtio_config.h    |  5 ++
> >   include/standard-headers/linux/virtio_pci.h   |  4 ++
> >   13 files changed, 274 insertions(+), 29 deletions(-)
> >
>