Show a cover letter.

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

{
    "id": 93677,
    "url": "https://patches.dpdk.org/api/covers/93677/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/cover/20210601030644.3318-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": "<20210601030644.3318-1-chenbo.xia@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210601030644.3318-1-chenbo.xia@intel.com",
    "date": "2021-06-01T03:06:38",
    "name": "[RFC,v3,0/6] Add mdev (Mediated device) support in DPDK",
    "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/20210601030644.3318-1-chenbo.xia@intel.com/mbox/",
    "series": [
        {
            "id": 17176,
            "url": "https://patches.dpdk.org/api/series/17176/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=17176",
            "date": "2021-06-01T03:06:38",
            "name": "Add mdev (Mediated device) support in DPDK",
            "version": 3,
            "mbox": "https://patches.dpdk.org/series/17176/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/covers/93677/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 F17F1A0524;\n\tTue,  1 Jun 2021 05:17:19 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 6BD6940041;\n\tTue,  1 Jun 2021 05:17:19 +0200 (CEST)",
            "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n by mails.dpdk.org (Postfix) with ESMTP id D2D9B40040\n for <dev@dpdk.org>; Tue,  1 Jun 2021 05:17:17 +0200 (CEST)",
            "from fmsmga002.fm.intel.com ([10.253.24.26])\n by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 31 May 2021 20:17:17 -0700",
            "from npg-dpdk-virtio-xiachenbo-nw.sh.intel.com ([10.67.118.250])\n by fmsmga002.fm.intel.com with ESMTP; 31 May 2021 20:17:11 -0700"
        ],
        "IronPort-SDR": [
            "\n jRRBRCZ2H0AE7QS60BNkStKtIOtT1PR/i1vLFHkfysk+sBe6ZM7DDh0+YRlCLJKT0htFBR+0qC\n xALlPdo7lw/Q==",
            "\n 3jifRUV3gD3F028nf6RQfNMoCZYvSrEGJLDS/slYEuNObuc+GAEraU2rE+70THDaVF0ePImbic\n lHWW2ZRLS/0A=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10001\"; a=\"183821620\"",
            "E=Sophos;i=\"5.83,239,1616482800\"; d=\"scan'208\";a=\"183821620\"",
            "E=Sophos;i=\"5.83,239,1616482800\"; d=\"scan'208\";a=\"482315313\""
        ],
        "X-ExtLoop1": "1",
        "From": "Chenbo Xia <chenbo.xia@intel.com>",
        "To": "dev@dpdk.org, thomas@monjalon.net, cunming.liang@intel.com,\n jingjing.wu@intel.com",
        "Cc": "anatoly.burakov@intel.com, ferruh.yigit@intel.com, mdr@ashroe.eu,\n nhorman@tuxdriver.com, bruce.richardson@intel.com,\n david.marchand@redhat.com, stephen@networkplumber.org,\n konstantin.ananyev@intel.com",
        "Date": "Tue,  1 Jun 2021 11:06:38 +0800",
        "Message-Id": "<20210601030644.3318-1-chenbo.xia@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20190715075214.16616-6-tiwei.bie@intel.com>",
        "References": "<20190715075214.16616-6-tiwei.bie@intel.com>",
        "Subject": "[dpdk-dev] [RFC v3 0/6] Add mdev (Mediated device) support in DPDK",
        "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": "Hi everyone,\n\nThis is a draft implementation of the mdev (Mediated device [1])\nsupport in DPDK PCI bus driver. Mdev is a way to virtualize devices\nin Linux kernel. Based on the device-api (mdev_type/device_api),\nthere could be different types of mdev devices (e.g. vfio-pci).\nIn this patchset, the PCI bus driver is extended to support scanning\nand probing the mdev devices whose device-api is \"vfio-pci\".\n\n                     +---------+\n                     | PCI bus |\n                     +----+----+\n                          |\n         +--------+-------+-------+--------+\n         |        |               |        |\n  Physical PCI devices ...   Mediated PCI devices ...\n\nThe first four patches in this patchset are mainly preparation of mdev\nbus support. The left two patches are the key implementation of mdev bus.\n\nThe implementation of mdev bus in DPDK has several options:\n\n1: Embed mdev bus in current pci bus\n\n   This patchset takes this option for an example. Mdev has several\n   device types: pci/platform/amba/ccw/ap. DPDK currently only cares\n   pci devices in all mdev device types so we could embed the mdev bus\n   into current pci bus. Then pci bus with mdev support will scan/plug/\n   unplug/.. not only normal pci devices but also mediated pci devices.\n\n2: A new mdev bus that scans mediated pci devices and probes mdev driver to\n   plug-in pci devices to pci bus\n\n   If we took this option, a new mdev bus will be implemented to scan\n   mediated pci devices and a new mdev driver for pci devices will be\n   implemented in pci bus to plug-in mediated pci devices to pci bus.\n\n   Our RFC v1 takes this option:\n   http://patchwork.dpdk.org/project/dpdk/cover/20190403071844.21126-1-tiwei.bie@intel.com/\n\n   Note that: for either option 1 or 2, device drivers do not know the\n   implementation difference but only use structs/functions exposed by\n   pci bus. Mediated pci devices are different from normal pci devices\n   on: 1. Mediated pci devices use UUID as address but normal ones use BDF.\n   2. Mediated pci devices may have some capabilities that normal pci\n   devices do not have. For example, mediated pci devices could have\n   regions that have sparse mmap capability, which allows a region to have\n   multiple mmap areas. Another example is mediated pci devices may have\n   regions/part of regions not mmaped but need to access them. Above\n   difference will change the current ABI (i.e., struct rte_pci_device).\n   Please check 5th and 6th patch for details.\n\n3. A brand new mdev bus that does everything\n\n   This option will implement a new and standalone mdev bus. This option\n   does not need any changes in current pci bus but only needs some shared\n   code (linux vfio part) in pci bus. Drivers of devices that support mdev\n   will register itself as a mdev driver and do not rely on pci bus anymore.\n   This option, IMHO, will make the code clean. The only potential problem\n   may be code duplication, which could be solved by making code of linux\n   vfio part of pci bus common and shared.\n\nYour comments on above three options are welcomed and appreciated!\n\nThanks!\nChenbo\n\n----------------------------------------------------------------------------\nRFC v3:\n- Add sparse mmap support\n- Minor fixes and improvements\n\nRFC v2:\n- Let PCI bus scan mediated PCI devices directly\n- Address Keith's comments\n- Merge below patch into this series (David)\n   http://patches.dpdk.org/patch/55927/\n- Add internal representation of PCI device (David)\n- Minor fixes and improvements\n\n[1] https://github.com/torvalds/linux/blob/master/Documentation/driver-api/vfio-mediated-device.rst\n\nChenbo Xia (1):\n  bus/pci: add sparse mmap support for mediated PCI devices\n\nTiwei Bie (5):\n  bus/pci: introduce an internal representation of PCI device\n  bus/pci: avoid depending on private value in kernel source\n  bus/pci: introduce helper for MMIO read and write\n  eal: add a helper for reading string from sysfs\n  bus/pci: add mdev support\n\n drivers/bus/pci/bsd/pci.c             |  36 +-\n drivers/bus/pci/linux/pci.c           | 107 ++++-\n drivers/bus/pci/linux/pci_init.h      |  29 +-\n drivers/bus/pci/linux/pci_uio.c       |  22 +\n drivers/bus/pci/linux/pci_vfio.c      | 586 ++++++++++++++++++++++----\n drivers/bus/pci/linux/pci_vfio_mdev.c | 277 ++++++++++++\n drivers/bus/pci/meson.build           |   1 +\n drivers/bus/pci/pci_common.c          |  86 ++--\n drivers/bus/pci/pci_params.c          |  36 +-\n drivers/bus/pci/private.h             |  40 ++\n drivers/bus/pci/rte_bus_pci.h         |  83 +++-\n drivers/bus/pci/version.map           |   4 +\n lib/eal/common/eal_filesystem.h       |  10 +\n lib/eal/freebsd/eal.c                 |  22 +\n lib/eal/linux/eal.c                   |  39 +-\n lib/eal/version.map                   |   3 +\n 16 files changed, 1224 insertions(+), 157 deletions(-)\n create mode 100644 drivers/bus/pci/linux/pci_vfio_mdev.c"
}