Show a cover letter.

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

{
    "id": 86508,
    "url": "https://patches.dpdk.org/api/covers/86508/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/cover/20210114062512.45462-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": "<20210114062512.45462-1-chenbo.xia@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210114062512.45462-1-chenbo.xia@intel.com",
    "date": "2021-01-14T06:25:04",
    "name": "[v3,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/20210114062512.45462-1-chenbo.xia@intel.com/mbox/",
    "series": [
        {
            "id": 14712,
            "url": "https://patches.dpdk.org/api/series/14712/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=14712",
            "date": "2021-01-14T06:25:04",
            "name": "Introduce emudev library and iavf emudev driver",
            "version": 3,
            "mbox": "https://patches.dpdk.org/series/14712/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/covers/86508/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id EE6FFA0A02;\n\tThu, 14 Jan 2021 07:30:06 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id B6BD5140DE5;\n\tThu, 14 Jan 2021 07:30:06 +0100 (CET)",
            "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n by mails.dpdk.org (Postfix) with ESMTP id 802DF140D25\n for <dev@dpdk.org>; Thu, 14 Jan 2021 07:30:05 +0100 (CET)",
            "from fmsmga002.fm.intel.com ([10.253.24.26])\n by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 13 Jan 2021 22:30:04 -0800",
            "from npg-dpdk-virtio-xiachenbo-nw.sh.intel.com ([10.67.119.123])\n by fmsmga002.fm.intel.com with ESMTP; 13 Jan 2021 22:30:02 -0800"
        ],
        "IronPort-SDR": [
            "\n nngpOBRKmVIPyurCgKyZSEVxPjYcQJ8UZTb5jiMRj/yTgF9VDJC2DZYtAWXJCptTF9b26dYhej\n /0k0Wdf0hk0A==",
            "\n YORD7U22j/S1paKiKKSccJZC/McnHTdK3wvLVJDh101g+LiXbDV3YrpM2duhAaKJLNLdJ/9Wlo\n YphrfzEuerCQ=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9863\"; a=\"178407152\"",
            "E=Sophos;i=\"5.79,346,1602572400\"; d=\"scan'208\";a=\"178407152\"",
            "E=Sophos;i=\"5.79,346,1602572400\"; d=\"scan'208\";a=\"400799370\""
        ],
        "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, beilei.xing@intel.com",
        "Date": "Thu, 14 Jan 2021 14:25:04 +0800",
        "Message-Id": "<20210114062512.45462-1-chenbo.xia@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20201219062806.56477-1-chenbo.xia@intel.com>",
        "References": "<20201219062806.56477-1-chenbo.xia@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v3 0/8] Introduce emudev library and iavf emudev\n driver",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "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/86498/\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/86498/\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\nWhy not rawdev for emulated device\n----------------------------------\nInstead of introducing new class emudev, emulated device could be presented as rawdev.\nHowever, existing rawdev APIs cannot meet the requirements of emulated device. There are\nthree API categories for emudev. They are emudev device lifecycle management, backend\nfacing APIs, and emudev device provider facing APIs respectively. Existing rawdev APIs\ncould only cover lifecycle management APIs and some of backend facing APIs. Other APIs,\neven if added to rawdev API are not required by other rawdev applications.\n\n----------------------------------\nv3:\n - fix interrupt issue in iavf emudev driver (Jingjing) \n\nv2:\n - fix driver meson build file\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            |  262 ++++++\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         |  239 ++++++\n drivers/emu/iavf/iavf_vfio_user.c      | 1076 ++++++++++++++++++++++++\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         |  502 +++++++++++\n lib/librte_emudev/rte_emudev.h         |  431 ++++++++++\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, 3226 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"
}