Show a cover letter.

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

{
    "id": 86498,
    "url": "http://patches.dpdk.org/api/covers/86498/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20210114061411.39166-1-chenbo.xia@intel.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20210114061411.39166-1-chenbo.xia@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210114061411.39166-1-chenbo.xia@intel.com",
    "date": "2021-01-14T06:14:02",
    "name": "[v2,0/9] Introduce vfio-user library",
    "submitter": {
        "id": 1276,
        "url": "http://patches.dpdk.org/api/people/1276/?format=api",
        "name": "Chenbo Xia",
        "email": "chenbo.xia@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20210114061411.39166-1-chenbo.xia@intel.com/mbox/",
    "series": [
        {
            "id": 14711,
            "url": "http://patches.dpdk.org/api/series/14711/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=14711",
            "date": "2021-01-14T06:14:02",
            "name": "Introduce vfio-user library",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/14711/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/86498/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 AD4B6A0A02;\n\tThu, 14 Jan 2021 07:19:29 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 3EAC1140D38;\n\tThu, 14 Jan 2021 07:19:29 +0100 (CET)",
            "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by mails.dpdk.org (Postfix) with ESMTP id A40BF140D25\n for <dev@dpdk.org>; Thu, 14 Jan 2021 07:19:27 +0100 (CET)",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 13 Jan 2021 22:19:26 -0800",
            "from npg-dpdk-virtio-xiachenbo-nw.sh.intel.com ([10.67.119.123])\n by orsmga003.jf.intel.com with ESMTP; 13 Jan 2021 22:19:23 -0800"
        ],
        "IronPort-SDR": [
            "\n iG43uTUwmmB9r9X15NsevUoSfiddmKSY08ly6Jgkgjgw3K4xMW+URNReY1quc+OqAyL4J5gcqN\n yAGVEWJQO6aw==",
            "\n p3Ik/X7KMCvXEq3Vlce0egn1WhyfcNAx6nrW93b9+Tj/v2sI6j6Kgpm2PAxquoX8wY2xcf1U+e\n GcCTsQgG+RtA=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9863\"; a=\"175735617\"",
            "E=Sophos;i=\"5.79,346,1602572400\"; d=\"scan'208\";a=\"175735617\"",
            "E=Sophos;i=\"5.79,346,1602572400\"; d=\"scan'208\";a=\"349068917\""
        ],
        "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:14:02 +0800",
        "Message-Id": "<20210114061411.39166-1-chenbo.xia@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20201218073851.93609-1-chenbo.xia@intel.com>",
        "References": "<20201218073851.93609-1-chenbo.xia@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v2 0/9] Introduce vfio-user library",
        "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 enables DPDK to be an alternative I/O device emulation library of\nbuilding virtualized devices in separate processes outside QEMU. It introduces\na new library for device emulation (librte_vfio_user).\n\n*librte_vfio_user* library is an implementation of VFIO-over-socket[1] (also\nknown as vfio-user) which is a protocol that allows a device to be virtualized\nin a separate process outside of QEMU. \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[2].\nVfio-user essentially implements the VFIO device model presented to the\nuser process by a set of messages over a unix-domain socket. The main\ndifference between application using vfio-user and application using vfio\nkernel module is that device manipulation is based on socket messages for\nvfio-user but system calls for vfio kernel module. The vfio-user devices\nconsist of a generic VFIO device type, living in QEMU, which is called the\nclient[3], and the core device implementation (emulated device), living\noutside of QEMU, which is called the server. With emulated devices removed\nfrom QEMU enabled by vfio-user implementation, other places should be\nintroduced to accommodate virtualized/emulated device. This series introduces\nvfio-user support in DPDK to enable DPDK as one of the living places for\nemulated device except QEMU.\n\nThis series introduce the server and client implementation of vfio-user protocol.\nThe server plays the role as emulated devices and the client is the device\nconsumer. With this implementation, DPDK will be enabled to be both device\nprovider and consumer.\n\nDesign overview\n---------------\n\n+--------------+     +--------------+     \n| +----------+ |     | +----------+ |\n| | Generic  | |     | | Emulated | |\n| | vfio-dev | |     | | device   | |\n| +----------+ |     | +----|-----+ |\n| +----------+ |     | +----|-----+ |\n| | vfio-user| |     | | vfio-user| |\n| | client   | |<--->| | server   | |\n| +----------+ |     | +----------+ |\n| QEMU/DPDK    |     | DPDK         |\n+--------------+     +--------------+\n\n- Generic vfio-dev. \n  It is the generic vfio framework in vfio applications like QEMU or DPDK.\n  Applications can keep the most of vfio device management and plug in a\n  vfio-user device type. Note that in current implementation, we have not\n  yet integrated client vfio-user into kernel vfio in DPDK but it is viable\n  and good to do so.\n\n- vfio-user client.\n  For DPDK, it is part of librte_vfio_user implementation to provide ways to\n  manipulate a vfio-user based emulated devices. This manipulation is very\n  similar with kernel vfio (i.e., syscalls like ioctl, mmap and pread/pwrite).\n  It is a base for vfio-user device consumer.\n\n- vfio-user server. \n  It is server part of librte_vfio_user. It provides ways to emulate your own\n  device. A device provider could only care about device layout that VFIO\n  defines but does not need to know how it communicates with vfio-user client.\n\n- Emulated device.\n  It is emulated device of any type (e.g., network, crypto and etc.).\n\nReferences\n----------\n[1]: https://patchew.org/QEMU/20201130161229.23164-1-thanos.makatos@nutanix.com/\n[2]: https://wiki.qemu.org/Features/MultiProcessQEMU\n[3]: https://github.com/oracle/qemu/tree/vfio-user-v0.2\n\n----------------------------------\nv2:\n - Clean up non-static inline function (Stephen)\n - Naturally pack vfio-user message payload and header (Stephen)\n - Make function definiton align with coding style (Beilei)\n - Clean up duplicate code in vfio-user server APIs (Beilei)\n - Fix some typos\n\nChenbo Xia (9):\n  lib: introduce vfio-user library\n  vfio_user: implement lifecycle related APIs\n  vfio_user: implement device and region related APIs\n  vfio_user: implement DMA table and socket address API\n  vfio_user: implement interrupt related APIs\n  vfio_user: add client APIs of device attach/detach\n  vfio_user: add client APIs of DMA/IRQ/region\n  test/vfio_user: introduce functional test\n  doc: add vfio-user library guide\n\n MAINTAINERS                             |    4 +\n app/test/meson.build                    |    4 +\n app/test/test_vfio_user.c               |  665 ++++++++++\n doc/guides/prog_guide/index.rst         |    1 +\n doc/guides/prog_guide/vfio_user_lib.rst |  215 +++\n doc/guides/rel_notes/release_21_02.rst  |   11 +\n lib/librte_vfio_user/meson.build        |   11 +\n lib/librte_vfio_user/rte_vfio_user.h    |  446 +++++++\n lib/librte_vfio_user/version.map        |   26 +\n lib/librte_vfio_user/vfio_user_base.c   |  223 ++++\n lib/librte_vfio_user/vfio_user_base.h   |  109 ++\n lib/librte_vfio_user/vfio_user_client.c |  700 ++++++++++\n lib/librte_vfio_user/vfio_user_client.h |   26 +\n lib/librte_vfio_user/vfio_user_server.c | 1593 +++++++++++++++++++++++\n lib/librte_vfio_user/vfio_user_server.h |   66 +\n lib/meson.build                         |    1 +\n 16 files changed, 4101 insertions(+)\n create mode 100644 app/test/test_vfio_user.c\n create mode 100644 doc/guides/prog_guide/vfio_user_lib.rst\n create mode 100644 lib/librte_vfio_user/meson.build\n create mode 100644 lib/librte_vfio_user/rte_vfio_user.h\n create mode 100644 lib/librte_vfio_user/version.map\n create mode 100644 lib/librte_vfio_user/vfio_user_base.c\n create mode 100644 lib/librte_vfio_user/vfio_user_base.h\n create mode 100644 lib/librte_vfio_user/vfio_user_client.c\n create mode 100644 lib/librte_vfio_user/vfio_user_client.h\n create mode 100644 lib/librte_vfio_user/vfio_user_server.c\n create mode 100644 lib/librte_vfio_user/vfio_user_server.h"
}