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
Cc: Maxime Coquelin <maxime.coquelin@redhat.com>
Subject: [dpdk-dev] [PATCH v2 00/44] net/virtio: Virtio PMD rework
Date: Tue, 19 Jan 2021 22:24:23 +0100 [thread overview]
Message-ID: <20210119212507.1043636-1-maxime.coquelin@redhat.com> (raw)
Thanks Chenbo, David & Adrian for your review contribution to
the V1. This V2 should implement all the changes you requested,
and fix a few regressions caught while testing.
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 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 eth dev
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 req 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 reqs 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
drivers/bus/vdev/rte_bus_vdev.h | 6 +
drivers/bus/vdev/vdev.c | 31 +
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 | 449 +++++----
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 | 896 ++++++++++++++----
drivers/net/virtio/virtio_user/vhost_vdpa.c | 323 +++++--
.../net/virtio/virtio_user/virtio_user_dev.c | 514 +++++-----
.../net/virtio/virtio_user/virtio_user_dev.h | 20 +-
drivers/net/virtio/virtio_user_ethdev.c | 301 +-----
drivers/net/virtio/virtqueue.c | 6 +-
drivers/net/virtio/virtqueue.h | 45 +-
27 files changed, 2704 insertions(+), 1876 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
--
2.29.2
next reply other threads:[~2021-01-19 21:25 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-19 21:24 Maxime Coquelin [this message]
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 01/44] bus/vdev: add helper to get vdev from eth dev Maxime Coquelin
2021-01-20 0:56 ` Thomas Monjalon
2021-01-25 10:53 ` Maxime Coquelin
2021-01-25 11:04 ` Thomas Monjalon
2021-01-21 8:58 ` Xia, Chenbo
2021-01-25 14:51 ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 02/44] bus/vdev: add driver IOVA VA mode requirement Maxime Coquelin
2021-01-20 15:32 ` David Marchand
2021-01-20 17:47 ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 03/44] net/virtio: fix getting old status on reconnect Maxime Coquelin
2021-01-21 7:12 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 04/44] net/virtio: introduce Virtio bus type Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 05/44] net/virtio: refactor virtio-user device Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 06/44] net/virtio: introduce PCI device metadata Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 07/44] net/virtio: move PCI device init in dedicated file Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 08/44] net/virtio: move PCI specific dev init to PCI ethdev init Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 09/44] net/virtio: move MSIX detection to PCI ethdev Maxime Coquelin
2021-01-21 7:12 ` Xia, Chenbo
2021-01-25 12:41 ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 10/44] net/virtio: force IOVA as VA mode for Virtio-user Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 11/44] net/virtio: store PCI type in Virtio device metadata Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 12/44] net/virtio: add callback for device closing Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 13/44] net/virtio: validate features at bus level Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 14/44] net/virtio: remove bus type enum Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 15/44] net/virtio: move PCI-specific fields to PCI device Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 16/44] net/virtio: pack virtio HW struct Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 17/44] net/virtio: move legacy IO to Virtio PCI Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 18/44] net/virtio: introduce generic virtio header Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 19/44] net/virtio: move features definition to generic header Maxime Coquelin
2021-01-21 6:47 ` Xia, Chenbo
2021-01-25 12:35 ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 20/44] net/virtio: move virtqueue defines in " Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 21/44] net/virtio: move config definitions to " Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 22/44] net/virtio: make interrupt handling more generic Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 23/44] net/virtio: move vring alignment to generic header Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 24/44] net/virtio: remove last PCI refs in non-PCI code Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 25/44] net/virtio: make Vhost-user req sender consistent Maxime Coquelin
2021-01-21 8:50 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 26/44] net/virtio: add Virtio-user ops to set owner Maxime Coquelin
2021-01-22 3:27 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 27/44] net/virtio: add Virtio-user features ops Maxime Coquelin
2021-01-22 7:25 ` Xia, Chenbo
2021-01-25 14:53 ` Maxime Coquelin
2021-01-22 8:46 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 28/44] net/virtio: add Virtio-user protocol " Maxime Coquelin
2021-01-22 7:27 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 29/44] net/virtio: add Virtio-user memory tables ops Maxime Coquelin
2021-01-22 7:34 ` Xia, Chenbo
2021-01-25 14:56 ` Maxime Coquelin
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 30/44] net/virtio: add Virtio-user vring setting ops Maxime Coquelin
2021-01-22 7:49 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 31/44] net/virtio: add Virtio-user vring file ops Maxime Coquelin
2021-01-22 8:01 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 32/44] net/virtio: add Virtio-user vring address ops Maxime Coquelin
2021-01-22 8:02 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 33/44] net/virtio: add Virtio-user status ops Maxime Coquelin
2021-01-22 8:02 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 34/44] net/virtio: remove useless request ops Maxime Coquelin
2021-01-22 8:10 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 35/44] net/virtio: improve Virtio-user errors handling Maxime Coquelin
2021-01-22 8:10 ` Xia, Chenbo
2021-01-19 21:24 ` [dpdk-dev] [PATCH v2 36/44] net/virtio: move Vhost-user reqs to Vhost-user backend Maxime Coquelin
2021-01-21 8:56 ` Xia, Chenbo
2021-01-25 14:50 ` Maxime Coquelin
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 37/44] net/virtio: make server mode blocking Maxime Coquelin
2021-01-22 8:19 ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 38/44] net/virtio: move protocol features to Vhost-user Maxime Coquelin
2021-01-22 8:20 ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 39/44] net/virtio: introduce backend data Maxime Coquelin
2021-01-22 8:26 ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 40/44] net/virtio: move Vhost-user specifics to its backend Maxime Coquelin
2021-01-22 8:49 ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 41/44] net/virtio: move Vhost-kernel data " Maxime Coquelin
2021-01-22 8:55 ` Xia, Chenbo
2021-01-25 14:59 ` Maxime Coquelin
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 42/44] net/virtio: move Vhost-vDPA " Maxime Coquelin
2021-01-22 9:06 ` Xia, Chenbo
2021-01-25 15:02 ` Maxime Coquelin
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 43/44] net/virtio: improve Vhost-user error logging Maxime Coquelin
2021-01-22 9:11 ` Xia, Chenbo
2021-01-25 15:04 ` Maxime Coquelin
2021-01-26 6:10 ` Xia, Chenbo
2021-01-19 21:25 ` [dpdk-dev] [PATCH v2 44/44] net/virtio: handle Virtio-user setup failure properly Maxime Coquelin
2021-01-22 9:24 ` Xia, Chenbo
2021-01-25 16:16 ` 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=20210119212507.1043636-1-maxime.coquelin@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).