[dpdk-dev] [PATCH v4 00/44] net/virtio: Virtio PMD rework
Maxime Coquelin
maxime.coquelin at redhat.com
Tue Jan 26 11:15:55 CET 2021
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
--
2.29.2
More information about the dev
mailing list