All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Coquelin <maxime.coquelin@redhat.com>
To: dev@dpdk.org, chenbo.xia@intel.com, olivier.matz@6wind.com,
	amorenoz@redhat.com, david.marchand@redhat.com
Subject: Re: [dpdk-dev] [PATCH v4 00/44] net/virtio: Virtio PMD rework
Date: Wed, 27 Jan 2021 12:59:42 +0100	[thread overview]
Message-ID: <bd64ed8e-e0dd-e971-612a-acbcdc8f9613@redhat.com> (raw)
In-Reply-To: <20210126101639.250481-1-maxime.coquelin@redhat.com>



On 1/26/21 11:15 AM, Maxime Coquelin wrote:
> This V3 fixes comments from Chenbo on patch 44 and
> implements the ABI exception in patch 2.
> 
> This series significantly rework Virtio PMD to improve
> the Virtio-user PMD and its backends integration.
> 
> First part of the series removes the dependency of
> Virtio-user ethdev on Virtio PCI, by creating generic
> files, adding per-bus meta data, ...
> 
> Main (if not single) functionnal change of this first
> part is to remove the hack for Virtio-user to work in
> IOVA as PA mode, this hack being very fragile.
> 
> Second part of the series reworks Virtio-user internal,
> by reworking the requests handling so that vDPA and Kernel
> backends no more hack into being Vhost-user backend. It
> implies implementing new ops for all the request types.
> Also, all the backend specific actions are moved from the
> virtio_user_dev.c and virtio_user_ethdev.c to their
> backend files.
> 
> Only functionnal change in this second part is making the
> Vhost-user server mode blocking at init time, as long as
> a client is not connected. The goal of this change is to
> make the Vhost-user support much more robust, as without
> blocking, the driver has to assume features that are going
> to be supported by the client, which is very fragile and
> error prone. As a side-effect, it also simplifies the
> logic nin several place of the virtio-user PMD.
> 
> Main changes in v4:
> - Add ABI exception (David)
> - Close FDs only up to max_queue_pairs
> - virtio_user_dev_uninit_notify() to return void
> 
> Main changes in v3:
> - Rename .intr_event to .intr_detect
> - Rework last patch, properly clean allocated resources
>   on failure.
> - Rebase on top of latest net-next/main
> - Minor typo fixes in comments and log improvements
> 
> Main changes in v2:
> ===================
> - Introduce vdev driver flag for drivers to require IOVA VA mode
> - Rebase on top of -rc1 changes
> - Fix regressions introduced in V1 (vhost-kernel broken, vhost-user reconnect...)
> - Various minor issues & typos fixed
> - Fix status feature issue introduced in v20.11, only reproduceable now that server
>   mode is made blocking
> - Improve failure handling in Virtio-user
> - Improve logging
> 
> Testing coverage (All passed)
> =============================
> - Virtio-pci PMD
>  * Virtio PMD in guest with Vhost-user backend in host
>  * Virtio PMD in guest with Vhost-kernel backend in host
> - Virtio-user PMD with Vhost-user backend
>  * Vhost-user PMD server <-> Virtio-user client PMD IO loopback
>  * Vhost-user PMD client <-> Virtio-user server PMD IO loopback
>  * Vhost-user PMD client <-> Virtio-user server PMD reconnect
> - Virtio-user PMD with Vhost-kernel backend
>  * iperf test case
>  * Txonly testpmd
> - Virtio-user PMD with Vhost-vDPA backend
>  * vdpa-sim (IO loopback)
>  * CX-6 DX Kernel vDPA (Tx only)
> 
> Maxime Coquelin (44):
>   bus/vdev: add helper to get vdev from ethdev
>   bus/vdev: add driver IOVA VA mode requirement
>   net/virtio: fix getting old status on reconnect
>   net/virtio: introduce Virtio bus type
>   net/virtio: refactor virtio-user device
>   net/virtio: introduce PCI device metadata
>   net/virtio: move PCI device init in dedicated file
>   net/virtio: move PCI specific dev init to PCI ethdev init
>   net/virtio: move MSIX detection to PCI ethdev
>   net/virtio: force IOVA as VA mode for Virtio-user
>   net/virtio: store PCI type in Virtio device metadata
>   net/virtio: add callback for device closing
>   net/virtio: validate features at bus level
>   net/virtio: remove bus type enum
>   net/virtio: move PCI-specific fields to PCI device
>   net/virtio: pack virtio HW struct
>   net/virtio: move legacy IO to Virtio PCI
>   net/virtio: introduce generic virtio header
>   net/virtio: move features definition to generic header
>   net/virtio: move virtqueue defines in generic header
>   net/virtio: move config definitions to generic header
>   net/virtio: make interrupt handling more generic
>   net/virtio: move vring alignment to generic header
>   net/virtio: remove last PCI refs in non-PCI code
>   net/virtio: make Vhost-user request sender consistent
>   net/virtio: add Virtio-user ops to set owner
>   net/virtio: add Virtio-user features ops
>   net/virtio: add Virtio-user protocol features ops
>   net/virtio: add Virtio-user memory tables ops
>   net/virtio: add Virtio-user vring setting ops
>   net/virtio: add Virtio-user vring file ops
>   net/virtio: add Virtio-user vring address ops
>   net/virtio: add Virtio-user status ops
>   net/virtio: remove useless request ops
>   net/virtio: improve Virtio-user errors handling
>   net/virtio: move Vhost-user requests to Vhost-user backend
>   net/virtio: make server mode blocking
>   net/virtio: move protocol features to Vhost-user
>   net/virtio: introduce backend data
>   net/virtio: move Vhost-user specifics to its backend
>   net/virtio: move Vhost-kernel data to its backend
>   net/virtio: move Vhost-vDPA data to its backend
>   net/virtio: improve Vhost-user error logging
>   net/virtio: handle Virtio-user setup failure properly
> 
>  devtools/libabigail.abignore                  |   2 +
>  drivers/bus/vdev/rte_bus_vdev.h               |   6 +
>  drivers/bus/vdev/vdev.c                       |  29 +
>  drivers/net/virtio/meson.build                |   6 +-
>  drivers/net/virtio/virtio.c                   |  71 ++
>  drivers/net/virtio/virtio.h                   | 246 +++++
>  drivers/net/virtio/virtio_ethdev.c            | 457 +++------
>  drivers/net/virtio/virtio_ethdev.h            |   6 +-
>  drivers/net/virtio/virtio_pci.c               | 448 +++++----
>  drivers/net/virtio/virtio_pci.h               | 286 +-----
>  drivers/net/virtio/virtio_pci_ethdev.c        | 226 +++++
>  drivers/net/virtio/virtio_ring.h              |   2 +-
>  drivers/net/virtio/virtio_rxtx.c              |  90 +-
>  drivers/net/virtio/virtio_rxtx_packed.h       |  10 +-
>  drivers/net/virtio/virtio_rxtx_packed_avx.h   |  10 +-
>  drivers/net/virtio/virtio_rxtx_packed_neon.h  |  10 +-
>  drivers/net/virtio/virtio_rxtx_simple.h       |   3 +-
>  drivers/net/virtio/virtio_user/vhost.h        |  79 +-
>  drivers/net/virtio/virtio_user/vhost_kernel.c | 461 ++++++---
>  .../net/virtio/virtio_user/vhost_kernel_tap.c |  25 +-
>  .../net/virtio/virtio_user/vhost_kernel_tap.h |   1 +
>  drivers/net/virtio/virtio_user/vhost_user.c   | 898 ++++++++++++++----
>  drivers/net/virtio/virtio_user/vhost_vdpa.c   | 323 +++++--
>  .../net/virtio/virtio_user/virtio_user_dev.c  | 573 ++++++-----
>  .../net/virtio/virtio_user/virtio_user_dev.h  |  21 +-
>  drivers/net/virtio/virtio_user_ethdev.c       | 301 +-----
>  drivers/net/virtio/virtqueue.c                |   6 +-
>  drivers/net/virtio/virtqueue.h                |  45 +-
>  28 files changed, 2742 insertions(+), 1899 deletions(-)
>  create mode 100644 drivers/net/virtio/virtio.c
>  create mode 100644 drivers/net/virtio/virtio.h
>  create mode 100644 drivers/net/virtio/virtio_pci_ethdev.c
> 

Applied to dpdk-next-virtio/main.

Thanks,
Maxime


  parent reply	other threads:[~2021-01-27 11:59 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-26 10:15 [dpdk-dev] [PATCH v4 00/44] net/virtio: Virtio PMD rework Maxime Coquelin
2021-01-26 10:15 ` [dpdk-dev] [PATCH v4 01/44] bus/vdev: add helper to get vdev from ethdev Maxime Coquelin
2021-01-26 10:15 ` [dpdk-dev] [PATCH v4 02/44] bus/vdev: add driver IOVA VA mode requirement Maxime Coquelin
2021-01-26 11:50   ` Xia, Chenbo
2021-01-26 12:50   ` David Marchand
2021-01-26 13:23     ` Kinsella, Ray
2021-01-26 14:40       ` David Marchand
2021-01-26 15:28         ` Kinsella, Ray
2021-01-27  8:23   ` David Marchand
2021-01-27  8:25     ` Maxime Coquelin
2021-01-26 10:15 ` [dpdk-dev] [PATCH v4 03/44] net/virtio: fix getting old status on reconnect Maxime Coquelin
2021-01-26 10:15 ` [dpdk-dev] [PATCH v4 04/44] net/virtio: introduce Virtio bus type Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 05/44] net/virtio: refactor virtio-user device Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 06/44] net/virtio: introduce PCI device metadata Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 07/44] net/virtio: move PCI device init in dedicated file Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 08/44] net/virtio: move PCI specific dev init to PCI ethdev init Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 09/44] net/virtio: move MSIX detection to PCI ethdev Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 10/44] net/virtio: force IOVA as VA mode for Virtio-user Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 11/44] net/virtio: store PCI type in Virtio device metadata Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 12/44] net/virtio: add callback for device closing Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 13/44] net/virtio: validate features at bus level Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 14/44] net/virtio: remove bus type enum Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 15/44] net/virtio: move PCI-specific fields to PCI device Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 16/44] net/virtio: pack virtio HW struct Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 17/44] net/virtio: move legacy IO to Virtio PCI Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 18/44] net/virtio: introduce generic virtio header Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 19/44] net/virtio: move features definition to generic header Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 20/44] net/virtio: move virtqueue defines in " Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 21/44] net/virtio: move config definitions to " Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 22/44] net/virtio: make interrupt handling more generic Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 23/44] net/virtio: move vring alignment to generic header Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 24/44] net/virtio: remove last PCI refs in non-PCI code Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 25/44] net/virtio: make Vhost-user request sender consistent Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 26/44] net/virtio: add Virtio-user ops to set owner Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 27/44] net/virtio: add Virtio-user features ops Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 28/44] net/virtio: add Virtio-user protocol " Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 29/44] net/virtio: add Virtio-user memory tables ops Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 30/44] net/virtio: add Virtio-user vring setting ops Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 31/44] net/virtio: add Virtio-user vring file ops Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 32/44] net/virtio: add Virtio-user vring address ops Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 33/44] net/virtio: add Virtio-user status ops Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 34/44] net/virtio: remove useless request ops Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 35/44] net/virtio: improve Virtio-user errors handling Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 36/44] net/virtio: move Vhost-user requests to Vhost-user backend Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 37/44] net/virtio: make server mode blocking Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 38/44] net/virtio: move protocol features to Vhost-user Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 39/44] net/virtio: introduce backend data Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 40/44] net/virtio: move Vhost-user specifics to its backend Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 41/44] net/virtio: move Vhost-kernel data " Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 42/44] net/virtio: move Vhost-vDPA " Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 43/44] net/virtio: improve Vhost-user error logging Maxime Coquelin
2021-01-26 10:16 ` [dpdk-dev] [PATCH v4 44/44] net/virtio: handle Virtio-user setup failure properly Maxime Coquelin
2021-01-26 12:02   ` Xia, Chenbo
2021-01-26 12:59     ` Maxime Coquelin
2021-01-27 11:59 ` Maxime Coquelin [this message]
2021-02-01  8:44 ` [dpdk-dev] [PATCH v4 00/44] net/virtio: Virtio PMD rework Wang, Yinan
2021-02-01  8:49   ` Maxime Coquelin
2021-02-01 13:00 ` Ilya Maximets
2021-02-01 13:03   ` Ilya Maximets
2021-02-01 13:16     ` Maxime Coquelin
2021-02-01 13:42       ` Ilya Maximets
2021-02-01 13:51         ` Maxime Coquelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bd64ed8e-e0dd-e971-612a-acbcdc8f9613@redhat.com \
    --to=maxime.coquelin@redhat.com \
    --cc=amorenoz@redhat.com \
    --cc=chenbo.xia@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=olivier.matz@6wind.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.