get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 131416,
    "url": "http://patches.dpdk.org/api/patches/131416/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20230914123615.1705654-4-david.marchand@redhat.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": "<20230914123615.1705654-4-david.marchand@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230914123615.1705654-4-david.marchand@redhat.com",
    "date": "2023-09-14T12:36:02",
    "name": "[v3,03/15] bus/pci: rework MSIX discovery with VFIO",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "e7a3762bc6284624fcce1299c9ec70ee424af2c6",
    "submitter": {
        "id": 1173,
        "url": "http://patches.dpdk.org/api/people/1173/?format=api",
        "name": "David Marchand",
        "email": "david.marchand@redhat.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20230914123615.1705654-4-david.marchand@redhat.com/mbox/",
    "series": [
        {
            "id": 29507,
            "url": "http://patches.dpdk.org/api/series/29507/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=29507",
            "date": "2023-09-14T12:35:59",
            "name": "Cleanup PCI(e) drivers",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/29507/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/131416/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/131416/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 5921842597;\n\tThu, 14 Sep 2023 14:36:49 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 244F440693;\n\tThu, 14 Sep 2023 14:36:38 +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 1FEDF4069F\n for <dev@dpdk.org>; Thu, 14 Sep 2023 14:36:35 +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-33-ET0E_fTEP7mjU565CpEerg-1; Thu, 14 Sep 2023 08:36:31 -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 ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n (No client certificate requested)\n by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EC53D101FAA1;\n Thu, 14 Sep 2023 12:36:30 +0000 (UTC)",
            "from dmarchan.redhat.com (unknown [10.45.225.25])\n by smtp.corp.redhat.com (Postfix) with ESMTP id A225D21B2413;\n Thu, 14 Sep 2023 12:36:29 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1694694994;\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=W+DPt7GcYNNdupYDddAk6RuyPSHvJQTiyiJAWNXt9lg=;\n b=Q04y5YKBj6AI9AIQ3R4h81/U33HJkzW4bzkePEzsrZtfrkkoo2r3GC2EMdNKc14fL+IjAz\n IaLVKLT9jyuby+m7K7DpBONiO4XCE6p8mha4ChO8Z/yCoLw6RGOcfJiNVNraIIWladF6Am\n Q97VMC8GFm7L37UJ9ralD40OKX1CJy0=",
        "X-MC-Unique": "ET0E_fTEP7mjU565CpEerg-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 v3 03/15] bus/pci: rework MSIX discovery with VFIO",
        "Date": "Thu, 14 Sep 2023 14:36:02 +0200",
        "Message-ID": "<20230914123615.1705654-4-david.marchand@redhat.com>",
        "In-Reply-To": "<20230914123615.1705654-1-david.marchand@redhat.com>",
        "References": "<20230803075038.307012-1-david.marchand@redhat.com>\n <20230914123615.1705654-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>\nReviewed-by: Chenbo Xia <chenbo.xia@intel.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": [
        "v3",
        "03/15"
    ]
}