On Fri, 18 Dec 2020 15:47:28 +0800
Chenbo Xia <chenbo....@intel.com> wrote:
> This series introduces a new device abstraction called emudev for emulated
> devices. A new library (librte_emudev) is implemented. The first emudev
> driver is also introduced, which emulates Intel Adaptive Virtual Function
> (iavf) as a software network device.
> 
> This series has a dependency on librte_vfio_user patch series:
> http://patchwork.dpdk.org/cover/85389/
> 
> Background & Motivation 
> -----------------------
> The disaggregated/multi-process QEMU is using VFIO-over-socket/vfio-user
> as the main transport mechanism to disaggregate IO services from QEMU.
> Therefore, librte_vfio_user is introduced in DPDK to accommodate
> emulated devices for high performance I/O. Although vfio-user library
> provides possibility of emulating devices in DPDK, DPDK does not have
> a device abstraction for emulated devices. A good device abstraction will
> be useful for applications or high performance data path driver. With
> this consideration, emudev library is designed and implemented. It also
> make it possbile to keep modular design on emulated devices by implementing
> data path related logic in a standalone driver (e.g., an ethdev driver)
> and keeps the unrelated logic in the emudev driver.
> 
> Design overview
> ---------------
> 
>                     +---------------------------------------+
>                     |   +---------------+    +-----------+  |
>                     |   |  iavf_emudev  |<-->| data path |  |
>                     |   |    driver     |    |   driver  |  |
>                     |   +---------------+    +-----------+  |
>                     |           |                           |
>                     | --------------------------- VDEV BUS  |
>                     |           |                           |
>                     |   +---------------+                   |
> +--------------+    |   | vdev:         |                   |
> | +----------+ |    |   | /path/to/vfio |                   |
> | | Generic  | |    |   +---------------+                   |
> | | vfio-dev | |    |           |                           |
> | +----------+ |    |           |                           |
> | +----------+ |    |      +----------+                     |
> | | vfio-user| |    |      | vfio-user|                     |
> | | client   | |<---|----->| server   |                     |
> | +----------+ |    |      +----------+                     |
> | QEMU/DPDK    |    | DPDK                                  |
> +--------------+    +---------------------------------------+
> 
> - Generic vfio-dev/vfio-user client/vfio-user server
>   Above concepts are all introduced in librte_vfio_user patch series:
>   http://patchwork.dpdk.org/cover/85389/
> 
> - vdev:/path/to/vfio.
>   It binds to vdev bus driver. The vdev device is defined by DPDK applications
>   through command line as '--vdev=emu_iavf, path=/path/to/socket' in 
> iavf_emudev
>   case. Parameters in command line include device name (emu_iavf) which is 
> used
>   to identify corresponding driver (in this case, iavf_emudev driver),
>   path=/path/to/socket which is used to open the transport interface to 
> vfio-user
>   client in QEMU/DPDK.
> 
> - data path driver.
>   The data path handling is splited to another standalone driver for modular
>   design.
> 
> 
> Chenbo Xia (8):
>   lib: introduce emudev library
>   doc: add emudev library guide
>   emu: introduce emulated iavf driver
>   emu/iavf: add vfio-user device register and unregister
>   emu/iavf: add resource management and internal logic of iavf
>   emu/iavf: add emudev operations to fit in emudev framework
>   test/emudev: introduce functional test
>   doc: update release notes for iavf emudev driver
> 
>  MAINTAINERS                            |   12 +
>  app/test/meson.build                   |    5 +-
>  app/test/test_emudev.c                 |   29 +
>  doc/guides/prog_guide/emudev.rst       |  122 +++
>  doc/guides/prog_guide/index.rst        |    1 +
>  doc/guides/rel_notes/release_21_02.rst |   16 +
>  drivers/emu/iavf/iavf_emu.c            |  250 ++++++
>  drivers/emu/iavf/iavf_emu_internal.h   |   69 ++
>  drivers/emu/iavf/iavf_emu_test.c       |  174 ++++
>  drivers/emu/iavf/iavf_emudev.c         |  237 ++++++
>  drivers/emu/iavf/iavf_vfio_user.c      | 1053 ++++++++++++++++++++++++
>  drivers/emu/iavf/iavf_vfio_user.h      |   57 ++
>  drivers/emu/iavf/meson.build           |   17 +
>  drivers/emu/iavf/rte_iavf_emu.h        |  119 +++
>  drivers/emu/iavf/version.map           |    3 +
>  drivers/emu/meson.build                |    6 +
>  drivers/meson.build                    |    1 +
>  lib/librte_emudev/meson.build          |    5 +
>  lib/librte_emudev/rte_emudev.c         |  486 +++++++++++
>  lib/librte_emudev/rte_emudev.h         |  410 +++++++++
>  lib/librte_emudev/rte_emudev_vdev.h    |   53 ++
>  lib/librte_emudev/version.map          |   27 +
>  lib/meson.build                        |    2 +-
>  23 files changed, 3152 insertions(+), 2 deletions(-)
>  create mode 100644 app/test/test_emudev.c
>  create mode 100644 doc/guides/prog_guide/emudev.rst
>  create mode 100644 drivers/emu/iavf/iavf_emu.c
>  create mode 100644 drivers/emu/iavf/iavf_emu_internal.h
>  create mode 100644 drivers/emu/iavf/iavf_emu_test.c
>  create mode 100644 drivers/emu/iavf/iavf_emudev.c
>  create mode 100644 drivers/emu/iavf/iavf_vfio_user.c
>  create mode 100644 drivers/emu/iavf/iavf_vfio_user.h
>  create mode 100644 drivers/emu/iavf/meson.build
>  create mode 100644 drivers/emu/iavf/rte_iavf_emu.h
>  create mode 100644 drivers/emu/iavf/version.map
>  create mode 100644 drivers/emu/meson.build
>  create mode 100644 lib/librte_emudev/meson.build
>  create mode 100644 lib/librte_emudev/rte_emudev.c
>  create mode 100644 lib/librte_emudev/rte_emudev.h
>  create mode 100644 lib/librte_emudev/rte_emudev_vdev.h
>  create mode 100644 lib/librte_emudev/version.map
> 

This patchset seems to have a dependency on a recent version of QEMU.
Was it merged? The patchset would need to be rebased and retested on current
DPDK. If still relevant please do that and resubmit.

Reply via email to