Show a cover letter.

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

{
    "id": 512,
    "url": "http://patches.dpdk.org/api/covers/512/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20231222194453.3049693-1-beilei.xing@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": "<20231222194453.3049693-1-beilei.xing@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231222194453.3049693-1-beilei.xing@intel.com",
    "date": "2023-12-22T19:44:49",
    "name": "[0/4] add VFIO IOMMUFD/CDEV support",
    "submitter": {
        "id": 410,
        "url": "http://patches.dpdk.org/api/people/410/?format=api",
        "name": "Xing, Beilei",
        "email": "beilei.xing@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20231222194453.3049693-1-beilei.xing@intel.com/mbox/",
    "series": [
        {
            "id": 30656,
            "url": "http://patches.dpdk.org/api/series/30656/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30656",
            "date": "2023-12-22T19:44:49",
            "name": "add VFIO IOMMUFD/CDEV support",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/30656/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/512/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 7E5934375E;\n\tFri, 22 Dec 2023 12:22:13 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 075414025D;\n\tFri, 22 Dec 2023 12:22:13 +0100 (CET)",
            "from mgamail.intel.com (mgamail.intel.com [134.134.136.65])\n by mails.dpdk.org (Postfix) with ESMTP id 804834003C\n for <dev@dpdk.org>; Fri, 22 Dec 2023 12:22:11 +0100 (CET)",
            "from fmviesa002.fm.intel.com ([10.60.135.142])\n by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 22 Dec 2023 03:22:10 -0800",
            "from dpdk-beileix-icelake.sh.intel.com ([10.67.116.155])\n by fmviesa002.fm.intel.com with ESMTP; 22 Dec 2023 03:22:08 -0800"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1703244131; x=1734780131;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=HeSKhnwP3YBKcVypwgeyZ1nPMCI7Wcg1JgfkcigJ7kQ=;\n b=SsjDt3QKw6rx3M5eZdhJTU66DWzv/EayXoa0HLmViz5rfj7vleIUpURm\n vHPW28psOFOIjlddNpu08lTmCIIeqZPC3HG3cDNdaK7gOcPj7HIPqP4OC\n AbK9JivaI1w9BY+GVqstShHPKtZy/blNqstrZDPwT6GvAFOKYr8ShNiju\n IpIainF7svfw8ua3bWKz2hiKt8u80UyXHTliY9/y7T3UhENY97cJvu28U\n h/McNO0S72/dHZL5Rs57HAZXt0MdR/Y6BE4eO2tGFZh953HEAp2lBbWpo\n yYZY28PnQfQDZDwD8fXRJJvA/gHh4Jr+yppLjlMGBpLkQKrDeERLUixcj w==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10931\"; a=\"399927180\"",
            "E=Sophos;i=\"6.04,296,1695711600\"; d=\"scan'208\";a=\"399927180\"",
            "E=Sophos;i=\"6.04,296,1695711600\"; d=\"scan'208\";a=\"11437145\""
        ],
        "X-ExtLoop1": "1",
        "From": "beilei.xing@intel.com",
        "To": "anatoly.burakov@intel.com",
        "Cc": "dev@dpdk.org, thomas@monjalon.net, ferruh.yigit@amd.com,\n bruce.richardson@intel.com, chenbox@nvidia.com, yahui.cao@intel.com,\n Beilei Xing <beilei.xing@intel.com>",
        "Subject": "[PATCH 0/4] add VFIO IOMMUFD/CDEV support",
        "Date": "Fri, 22 Dec 2023 19:44:49 +0000",
        "Message-Id": "<20231222194453.3049693-1-beilei.xing@intel.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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"
    },
    "content": "From: Beilei Xing <beilei.xing@intel.com>\n\nThis is a draft implementation to support IOMMUFD[1] user interface and VFIO\nCDEV user interface[2].\n\nProblem statement:\nLinux now includes multiple device-passthrough frameworks (e.g. VFIO and vDPA)\nand those frameworks implement their own logic for managing I/O page tables,\nwhich is hard to scale to support modern IOMMU features like PASID, I/O page\nfault, IOMMU dirty page tracking, etc.\n\nIn order to fix the issue, a new standalone IOMMU subsystem called IOMMUFD is\nintroduced in Linux Kernel since v6.2. The goal is to make Linux subsystems like\nVFIO and vDPA to consume a unified IOMMU framework. Along with this new IOMMUFD\nframework, new device-centric VFIO uAPI called VFIO CDEV is also introduced\nsince Linux Kernel v6.6. vDPA support for IOMMUFD in Linux Kernel is still work\nin progress[3].\n\nSince all new IOMMU features provided by different vendors will only be supported\nin the new framework instead of legacy one, it's important for DPDK to support\nthis new IOMMUFD framework to use latest IOMMU features.\n\nFor VFIO subsystem, mainline Linux supports both of VFIO Container/GROUP interface\nand VFIO IOMMUFD/CDEV interface. IOMMUFD has no impact on the existing VFIO\nContainer/Group interface, while latest IOMMU feature(e.g. PASID/SSID) may be only\navailable through VFIO IOMMUFD/CDEV interface. Comparing with VFIO Container and\nVFIO IOMMUFD, vfio device uAPI does not change while I/O page tables management is\nmoved from VFIO Container into IOMMUFD interface.\n\nDesign:\nFor DPDK implementation, since VFIO Container/GROUP & VFIO IOMMUFD/CDEV may co-exist\nnow, a new VFIO IOMMUFD file/interface will be added in EAL. Since IOMMUFD is a\nunified framework which can be consumed by VFIO, vDPA, etc, iommufd will be added\nas a standalone file/interface in EAL. Hence, DPDK bus driver (e.g. PCI) has 2\noption to probe vfio device.\n\nThe diagram below shows relationship between VFIO Container/GROUP, IOMMUFD, VFIO\nCDEV and bus driver (e.g. PCI) in DPDK with some comments below.\n\n                     _____________________\n                    |        [4]          |\n                    |                     |\n                    |                     |\n                    |PCI BUS              |\n                    |_____________________|\n                        |             |\n                        |             |\n        ________________v___       ___v______________      ________________________\n       |       [1]          |     |       [2]        |    |                        |\n       |vfio container      |     |                  |    |                        |\n       |vfio group          |     |vfio cdev         |    |   Other Consumer       |\n       |                    |     |                  |    |   (vDPA IOMMUFD,       |\n       |VFIO                |     |VFIO IOMMUFD(new) |    |    common memory)      |\n       |____________________|     |__________________|    |________________________|\n                                                |              |\n                                                |              |\n                                             ___v______________v___\n                                            |        [3]           |\n                                            | i/o page table mgmt  |\n                                            |                      |\n                                            |                      |\n                                            |IOMMUFD(new)          |\n                                            |______________________|\n\n1. VFIO component is the existed and mature framework for device passthrough. No\n   function changes here.\n2. VFIO IOMMUFD is a new component added to co-work with IOMMUFD. It exposes function\n   for PCI BUS to probe PCI device through VFIO CDEV interface.\n3. IOMMUFD is a new component added. It exposes unified interface for VFIO IOMMUFD\n   and other consumer to manage I/O page table.\n4. PCI BUS is the existed component. Since now Linux has both of VFIO Container/GROUP\n   & VFIO IOMMUFD/CDEV support, PCI BUS needs to determine the interface to probe the\n   PCI device depending on user configuration.\n\nTBD:\nMulti-process will be supported in future.\n\n[1] https://lwn.net/Articles/912515/\n[2] https://patchwork.kernel.org/project/kvm/cover/20230718135551.6592-1-yi.l.liu@intel.com/\n[3] https://lore.kernel.org/lkml/20231103171641.1703146-1-lulu@redhat.com/\n\nBeilei Xing (3):\n  vfio: add VFIO IOMMUFD support\n  bus/pci: add VFIO CDEV support\n  eal: add new args to choose VFIO mode\n\nYahui Cao (1):\n  iommufd: add IOMMUFD support\n\n config/meson.build                  |   3 +\n config/rte_config.h                 |   1 +\n drivers/bus/pci/bus_pci_driver.h    |   1 +\n drivers/bus/pci/linux/pci.c         |  21 +-\n drivers/bus/pci/linux/pci_init.h    |   4 +\n drivers/bus/pci/linux/pci_vfio.c    |  52 +++-\n lib/eal/common/eal_common_config.c  |   6 +\n lib/eal/common/eal_common_options.c |  48 +++-\n lib/eal/common/eal_internal_cfg.h   |   1 +\n lib/eal/common/eal_options.h        |   2 +\n lib/eal/include/rte_eal.h           |  18 ++\n lib/eal/include/rte_iommufd.h       |  73 ++++++\n lib/eal/include/rte_vfio.h          |  55 ++++\n lib/eal/linux/eal.c                 |  22 ++\n lib/eal/linux/eal_iommufd.c         | 183 +++++++++++++\n lib/eal/linux/eal_iommufd.h         |  43 ++++\n lib/eal/linux/eal_vfio.h            |   3 +\n lib/eal/linux/eal_vfio_iommufd.c    | 385 ++++++++++++++++++++++++++++\n lib/eal/linux/meson.build           |   2 +\n lib/eal/version.map                 |   6 +\n 20 files changed, 918 insertions(+), 11 deletions(-)\n create mode 100644 lib/eal/include/rte_iommufd.h\n create mode 100644 lib/eal/linux/eal_iommufd.c\n create mode 100644 lib/eal/linux/eal_iommufd.h\n create mode 100644 lib/eal/linux/eal_vfio_iommufd.c"
}