[dpdk-dev] [PATCH 0/4] Add external contiguous memory support to Virtio-user

Maxime Coquelin maxime.coquelin at redhat.com
Fri Dec 13 15:13:18 CET 2019


Somme applications/frameworks using DPDK allocate their own memory
for its buffers. This is the case of Seastar, and also VPP.

It is currently not possible to use Virtio-user PMD with these
applications because Virtio-user requires file descriptor for this
memory to be shared with the vhost-user backend (vDPA in our case [0]).

This series introduces a new API in EAL to register external memory
that is contiguous in both the VA and the IOVA space.

It also enables VDEVs to implement the DMA map/unmap callback, and
implement it in Virtio-user PMD.

Please note that extmem unit tests are missing. I'm working on it
and it will be in v2. Just share this v1 for early reviews.

Maxime Coquelin (4):
  eal: add new API to register contiguous external memory
  eal: allow getting memory segment FD with external memory
  bus/vdev: add DMA mapping supprt
  net/virtio: add DMA mapping callback to virtio-user

 drivers/bus/vdev/rte_bus_vdev.h               | 24 +++++
 drivers/bus/vdev/vdev.c                       | 50 +++++++++++
 .../net/virtio/virtio_user/virtio_user_dev.c  | 10 +--
 .../net/virtio/virtio_user/virtio_user_dev.h  |  3 +
 drivers/net/virtio/virtio_user_ethdev.c       | 58 +++++++++++++
 lib/librte_eal/common/eal_common_memory.c     | 87 ++++++++++++++++---
 lib/librte_eal/common/include/rte_memory.h    | 46 ++++++++++
 lib/librte_eal/common/malloc_heap.c           | 17 +++-
 lib/librte_eal/common/malloc_heap.h           |  2 +-
 lib/librte_eal/common/rte_malloc.c            |  2 +-
 lib/librte_eal/rte_eal_version.map            |  3 +
 11 files changed, 278 insertions(+), 24 deletions(-)

-- 
2.21.0



More information about the dev mailing list