Show a cover letter.

GET /api/covers/85399/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 85399,
    "url": "https://patches.dpdk.org/api/covers/85399/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/cover/20201218074736.93999-1-chenbo.xia@intel.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20201218074736.93999-1-chenbo.xia@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201218074736.93999-1-chenbo.xia@intel.com",
    "date": "2020-12-18T07:47:28",
    "name": "[0/8] Introduce emudev library and iavf emudev driver",
    "submitter": {
        "id": 1276,
        "url": "https://patches.dpdk.org/api/people/1276/?format=api",
        "name": "Chenbo Xia",
        "email": "chenbo.xia@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/cover/20201218074736.93999-1-chenbo.xia@intel.com/mbox/",
    "series": [
        {
            "id": 14362,
            "url": "https://patches.dpdk.org/api/series/14362/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=14362",
            "date": "2020-12-18T07:47:28",
            "name": "Introduce emudev library and iavf emudev driver",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/14362/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/covers/85399/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 63DADA09F6;\n\tFri, 18 Dec 2020 09:02:40 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 8FF2DCA2C;\n\tFri, 18 Dec 2020 09:02:38 +0100 (CET)",
            "from mga06.intel.com (mga06.intel.com [134.134.136.31])\n by dpdk.org (Postfix) with ESMTP id 0CC20CA2A\n for <dev@dpdk.org>; Fri, 18 Dec 2020 09:02:36 +0100 (CET)",
            "from fmsmga005.fm.intel.com ([10.253.24.32])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 18 Dec 2020 00:02:34 -0800",
            "from npg-dpdk-virtio-xiachenbo-nw.sh.intel.com ([10.67.119.123])\n by fmsmga005.fm.intel.com with ESMTP; 18 Dec 2020 00:02:32 -0800"
        ],
        "IronPort-SDR": [
            "\n tD47kALKJj9h7bqog/8wFAnLlVOfy7u2aM0Mlo+xsyQIBllPj0akIDiSpM51LOWQ5z3/H+WQ+Q\n P7oTS/tJ+C1Q==",
            "\n GQxjJ1wJlTNUVak13Y2f85HYF3ssS0nZTEMdGAEKUEnHErWnLeladBKXfo5tvScT0v34/oMeji\n zYZwm2Ud8o4Q=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9838\"; a=\"236970604\"",
            "E=Sophos;i=\"5.78,429,1599548400\"; d=\"scan'208\";a=\"236970604\"",
            "E=Sophos;i=\"5.78,429,1599548400\"; d=\"scan'208\";a=\"561095708\""
        ],
        "X-ExtLoop1": "1",
        "From": "Chenbo Xia <chenbo.xia@intel.com>",
        "To": "dev@dpdk.org,\n\tthomas@monjalon.net,\n\tdavid.marchand@redhat.com",
        "Cc": "stephen@networkplumber.org, cunming.liang@intel.com, xiuchun.lu@intel.com,\n miao.li@intel.com, jingjing.wu@intel.com",
        "Date": "Fri, 18 Dec 2020 15:47:28 +0800",
        "Message-Id": "<20201218074736.93999-1-chenbo.xia@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "Subject": "[dpdk-dev] [PATCH 0/8] Introduce emudev library and iavf emudev\n\tdriver",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This series introduces a new device abstraction called emudev for emulated\ndevices. A new library (librte_emudev) is implemented. The first emudev\ndriver is also introduced, which emulates Intel Adaptive Virtual Function\n(iavf) as a software network device.\n\nThis series has a dependency on librte_vfio_user patch series:\nhttp://patchwork.dpdk.org/cover/85389/\n\nBackground & Motivation \n-----------------------\nThe disaggregated/multi-process QEMU is using VFIO-over-socket/vfio-user\nas the main transport mechanism to disaggregate IO services from QEMU.\nTherefore, librte_vfio_user is introduced in DPDK to accommodate\nemulated devices for high performance I/O. Although vfio-user library\nprovides possibility of emulating devices in DPDK, DPDK does not have\na device abstraction for emulated devices. A good device abstraction will\nbe useful for applications or high performance data path driver. With\nthis consideration, emudev library is designed and implemented. It also\nmake it possbile to keep modular design on emulated devices by implementing\ndata path related logic in a standalone driver (e.g., an ethdev driver)\nand keeps the unrelated logic in the emudev driver.\n\nDesign overview\n---------------\n\n                    +---------------------------------------+\n                    |   +---------------+    +-----------+  |\n                    |   |  iavf_emudev  |<-->| data path |  |\n                    |   |    driver     |    |   driver  |  |\n                    |   +---------------+    +-----------+  |\n                    |           |                           |\n                    | --------------------------- VDEV BUS  |\n                    |           |                           |\n                    |   +---------------+                   |\n+--------------+    |   | vdev:         |                   |\n| +----------+ |    |   | /path/to/vfio |                   |\n| | Generic  | |    |   +---------------+                   |\n| | vfio-dev | |    |           |                           |\n| +----------+ |    |           |                           |\n| +----------+ |    |      +----------+                     |\n| | vfio-user| |    |      | vfio-user|                     |\n| | client   | |<---|----->| server   |                     |\n| +----------+ |    |      +----------+                     |\n| QEMU/DPDK    |    | DPDK                                  |\n+--------------+    +---------------------------------------+\n\n- Generic vfio-dev/vfio-user client/vfio-user server\n  Above concepts are all introduced in librte_vfio_user patch series:\n  http://patchwork.dpdk.org/cover/85389/\n\n- vdev:/path/to/vfio.\n  It binds to vdev bus driver. The vdev device is defined by DPDK applications\n  through command line as '--vdev=emu_iavf, path=/path/to/socket' in iavf_emudev\n  case. Parameters in command line include device name (emu_iavf) which is used\n  to identify corresponding driver (in this case, iavf_emudev driver),\n  path=/path/to/socket which is used to open the transport interface to vfio-user\n  client in QEMU/DPDK.\n\n- data path driver.\n  The data path handling is splited to another standalone driver for modular\n  design.\n\n\nChenbo Xia (8):\n  lib: introduce emudev library\n  doc: add emudev library guide\n  emu: introduce emulated iavf driver\n  emu/iavf: add vfio-user device register and unregister\n  emu/iavf: add resource management and internal logic of iavf\n  emu/iavf: add emudev operations to fit in emudev framework\n  test/emudev: introduce functional test\n  doc: update release notes for iavf emudev driver\n\n MAINTAINERS                            |   12 +\n app/test/meson.build                   |    5 +-\n app/test/test_emudev.c                 |   29 +\n doc/guides/prog_guide/emudev.rst       |  122 +++\n doc/guides/prog_guide/index.rst        |    1 +\n doc/guides/rel_notes/release_21_02.rst |   16 +\n drivers/emu/iavf/iavf_emu.c            |  250 ++++++\n drivers/emu/iavf/iavf_emu_internal.h   |   69 ++\n drivers/emu/iavf/iavf_emu_test.c       |  174 ++++\n drivers/emu/iavf/iavf_emudev.c         |  237 ++++++\n drivers/emu/iavf/iavf_vfio_user.c      | 1053 ++++++++++++++++++++++++\n drivers/emu/iavf/iavf_vfio_user.h      |   57 ++\n drivers/emu/iavf/meson.build           |   17 +\n drivers/emu/iavf/rte_iavf_emu.h        |  119 +++\n drivers/emu/iavf/version.map           |    3 +\n drivers/emu/meson.build                |    6 +\n drivers/meson.build                    |    1 +\n lib/librte_emudev/meson.build          |    5 +\n lib/librte_emudev/rte_emudev.c         |  486 +++++++++++\n lib/librte_emudev/rte_emudev.h         |  410 +++++++++\n lib/librte_emudev/rte_emudev_vdev.h    |   53 ++\n lib/librte_emudev/version.map          |   27 +\n lib/meson.build                        |    2 +-\n 23 files changed, 3152 insertions(+), 2 deletions(-)\n create mode 100644 app/test/test_emudev.c\n create mode 100644 doc/guides/prog_guide/emudev.rst\n create mode 100644 drivers/emu/iavf/iavf_emu.c\n create mode 100644 drivers/emu/iavf/iavf_emu_internal.h\n create mode 100644 drivers/emu/iavf/iavf_emu_test.c\n create mode 100644 drivers/emu/iavf/iavf_emudev.c\n create mode 100644 drivers/emu/iavf/iavf_vfio_user.c\n create mode 100644 drivers/emu/iavf/iavf_vfio_user.h\n create mode 100644 drivers/emu/iavf/meson.build\n create mode 100644 drivers/emu/iavf/rte_iavf_emu.h\n create mode 100644 drivers/emu/iavf/version.map\n create mode 100644 drivers/emu/meson.build\n create mode 100644 lib/librte_emudev/meson.build\n create mode 100644 lib/librte_emudev/rte_emudev.c\n create mode 100644 lib/librte_emudev/rte_emudev.h\n create mode 100644 lib/librte_emudev/rte_emudev_vdev.h\n create mode 100644 lib/librte_emudev/version.map"
}