get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/130566/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 130566,
    "url": "http://patchwork.dpdk.org/api/patches/130566/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20230821113549.3191921-4-david.marchand@redhat.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20230821113549.3191921-4-david.marchand@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230821113549.3191921-4-david.marchand@redhat.com",
    "date": "2023-08-21T11:35:36",
    "name": "[v2,03/15] bus/pci: rework MSIX discovery with VFIO",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "e7a3762bc6284624fcce1299c9ec70ee424af2c6",
    "submitter": {
        "id": 1173,
        "url": "http://patchwork.dpdk.org/api/people/1173/?format=api",
        "name": "David Marchand",
        "email": "david.marchand@redhat.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20230821113549.3191921-4-david.marchand@redhat.com/mbox/",
    "series": [
        {
            "id": 29292,
            "url": "http://patchwork.dpdk.org/api/series/29292/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=29292",
            "date": "2023-08-21T11:35:33",
            "name": "Cleanup PCI(e) drivers",
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/29292/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/130566/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/130566/checks/",
    "tags": {},
    "related": [],
    "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 0EA52430C1;\n\tMon, 21 Aug 2023 13:37:24 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id AB4E04327C;\n\tMon, 21 Aug 2023 13:36:10 +0200 (CEST)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by mails.dpdk.org (Postfix) with ESMTP id 804D843279\n for <dev@dpdk.org>; Mon, 21 Aug 2023 13:36:08 +0200 (CEST)",
            "from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com\n [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n us-mta-31-PhMY_1bhNu6vgFa1zV2rgQ-1; Mon, 21 Aug 2023 07:36:05 -0400",
            "from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com\n [10.11.54.6])\n (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n (No client certificate requested)\n by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 83A14185A794;\n Mon, 21 Aug 2023 11:36:04 +0000 (UTC)",
            "from dmarchan.redhat.com (unknown [10.45.226.19])\n by smtp.corp.redhat.com (Postfix) with ESMTP id 387D62166B25;\n Mon, 21 Aug 2023 11:36:03 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1692617768;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=RtOCmrC/mGL2gwKPK9UczjKzovXsOxc8CU0W4dk+byQ=;\n b=ECX9V5XBy3SVvMXrcDv4ePxkkuEAFdgzkH7bsu6+6WRsOrlZuahc6Rc2eWBlAcHmbziXpy\n q+9dUQtowRvCr0o90ZF3CCoTUL6nexqfdB+b5y/SY2TK17PT+pGeLMMfWtKjJmCzzHNz91\n MLOYUR6dP/6PgGKohXcFbtYpo9ayIhA=",
        "X-MC-Unique": "PhMY_1bhNu6vgFa1zV2rgQ-1",
        "From": "David Marchand <david.marchand@redhat.com>",
        "To": "dev@dpdk.org",
        "Cc": "thomas@monjalon.net, ferruh.yigit@amd.com, chenbo.xia@intel.com,\n nipun.gupta@amd.com, bruce.richardson@intel.com,\n Anatoly Burakov <anatoly.burakov@intel.com>",
        "Subject": "[PATCH v2 03/15] bus/pci: rework MSIX discovery with VFIO",
        "Date": "Mon, 21 Aug 2023 13:35:36 +0200",
        "Message-ID": "<20230821113549.3191921-4-david.marchand@redhat.com>",
        "In-Reply-To": "<20230821113549.3191921-1-david.marchand@redhat.com>",
        "References": "<20230803075038.307012-1-david.marchand@redhat.com>\n <20230821113549.3191921-1-david.marchand@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.1 on 10.11.54.6",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain; charset=\"US-ASCII\"; x-default=true",
        "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": "This is a preparatory step before using new helpers for finding PCI\ncapabilities.\nIn the code querying PCI capabilities for checking MSIX availability,\nreplace direct calls to VFIO fd with the existing helpers for reading\nPCI configuration space: this requires setting VFIO fd in the PCI\ndevice object than was done before this change and removes the need to\npass around this vfio_dev_fd variable.\n\nSigned-off-by: David Marchand <david.marchand@redhat.com>\n---\n drivers/bus/pci/linux/pci_vfio.c | 27 ++++++++++-----------------\n 1 file changed, 10 insertions(+), 17 deletions(-)",
    "diff": "diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c\nindex 8fa7fa458f..958f8b3b52 100644\n--- a/drivers/bus/pci/linux/pci_vfio.c\n+++ b/drivers/bus/pci/linux/pci_vfio.c\n@@ -107,23 +107,16 @@ pci_vfio_write_config(const struct rte_pci_device *dev,\n \n /* get PCI BAR number where MSI-X interrupts are */\n static int\n-pci_vfio_get_msix_bar(const struct rte_pci_device *dev, int fd,\n+pci_vfio_get_msix_bar(const struct rte_pci_device *dev,\n \tstruct pci_msix_table *msix_table)\n {\n \tint ret;\n \tuint32_t reg;\n \tuint16_t flags;\n \tuint8_t cap_id, cap_offset;\n-\tuint64_t size, offset;\n-\n-\tif (pci_vfio_get_region(dev, VFIO_PCI_CONFIG_REGION_INDEX,\n-\t\t&size, &offset) != 0) {\n-\t\tRTE_LOG(ERR, EAL, \"Cannot get offset of CONFIG region.\\n\");\n-\t\treturn -1;\n-\t}\n \n \t/* read PCI capability pointer from config space */\n-\tret = pread64(fd, &reg, sizeof(reg), offset + PCI_CAPABILITY_LIST);\n+\tret = rte_pci_read_config(dev, &reg, sizeof(reg), PCI_CAPABILITY_LIST);\n \tif (ret != sizeof(reg)) {\n \t\tRTE_LOG(ERR, EAL,\n \t\t\t\"Cannot read capability pointer from PCI config space!\\n\");\n@@ -136,7 +129,7 @@ pci_vfio_get_msix_bar(const struct rte_pci_device *dev, int fd,\n \twhile (cap_offset) {\n \n \t\t/* read PCI capability ID */\n-\t\tret = pread64(fd, &reg, sizeof(reg), offset + cap_offset);\n+\t\tret = rte_pci_read_config(dev, &reg, sizeof(reg), cap_offset);\n \t\tif (ret != sizeof(reg)) {\n \t\t\tRTE_LOG(ERR, EAL,\n \t\t\t\t\"Cannot read capability ID from PCI config space!\\n\");\n@@ -148,7 +141,7 @@ pci_vfio_get_msix_bar(const struct rte_pci_device *dev, int fd,\n \n \t\t/* if we haven't reached MSI-X, check next capability */\n \t\tif (cap_id != PCI_CAP_ID_MSIX) {\n-\t\t\tret = pread64(fd, &reg, sizeof(reg), offset + cap_offset);\n+\t\t\tret = rte_pci_read_config(dev, &reg, sizeof(reg), cap_offset);\n \t\t\tif (ret != sizeof(reg)) {\n \t\t\t\tRTE_LOG(ERR, EAL,\n \t\t\t\t\t\"Cannot read capability pointer from PCI config space!\\n\");\n@@ -163,14 +156,14 @@ pci_vfio_get_msix_bar(const struct rte_pci_device *dev, int fd,\n \t\t/* else, read table offset */\n \t\telse {\n \t\t\t/* table offset resides in the next 4 bytes */\n-\t\t\tret = pread64(fd, &reg, sizeof(reg), offset + cap_offset + 4);\n+\t\t\tret = rte_pci_read_config(dev, &reg, sizeof(reg), cap_offset + 4);\n \t\t\tif (ret != sizeof(reg)) {\n \t\t\t\tRTE_LOG(ERR, EAL,\n \t\t\t\t\t\"Cannot read table offset from PCI config space!\\n\");\n \t\t\t\treturn -1;\n \t\t\t}\n \n-\t\t\tret = pread64(fd, &flags, sizeof(flags), offset + cap_offset + 2);\n+\t\t\tret = rte_pci_read_config(dev, &flags, sizeof(flags), cap_offset + 2);\n \t\t\tif (ret != sizeof(flags)) {\n \t\t\t\tRTE_LOG(ERR, EAL,\n \t\t\t\t\t\"Cannot read table flags from PCI config space!\\n\");\n@@ -306,9 +299,6 @@ pci_vfio_setup_interrupts(struct rte_pci_device *dev, int vfio_dev_fd)\n \t\tif (rte_intr_fd_set(dev->intr_handle, fd))\n \t\t\treturn -1;\n \n-\t\tif (rte_intr_dev_fd_set(dev->intr_handle, vfio_dev_fd))\n-\t\t\treturn -1;\n-\n \t\tswitch (i) {\n \t\tcase VFIO_PCI_MSIX_IRQ_INDEX:\n \t\t\tintr_mode = RTE_INTR_MODE_MSIX;\n@@ -838,6 +828,9 @@ pci_vfio_map_resource_primary(struct rte_pci_device *dev)\n \tif (ret)\n \t\treturn ret;\n \n+\tif (rte_intr_dev_fd_set(dev->intr_handle, vfio_dev_fd))\n+\t\tgoto err_vfio_dev_fd;\n+\n \t/* allocate vfio_res and get region info */\n \tvfio_res = rte_zmalloc(\"VFIO_RES\", sizeof(*vfio_res), 0);\n \tif (vfio_res == NULL) {\n@@ -869,7 +862,7 @@ pci_vfio_map_resource_primary(struct rte_pci_device *dev)\n \t/* get MSI-X BAR, if any (we have to know where it is because we can't\n \t * easily mmap it when using VFIO)\n \t */\n-\tret = pci_vfio_get_msix_bar(dev, vfio_dev_fd, &vfio_res->msix_table);\n+\tret = pci_vfio_get_msix_bar(dev, &vfio_res->msix_table);\n \tif (ret < 0) {\n \t\tRTE_LOG(ERR, EAL, \"%s cannot get MSI-X BAR number!\\n\",\n \t\t\t\tpci_addr);\n",
    "prefixes": [
        "v2",
        "03/15"
    ]
}