get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 41573,
    "url": "http://patches.dpdk.org/api/patches/41573/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1530019761-27794-1-git-send-email-alejandro.lucero@netronome.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": "<1530019761-27794-1-git-send-email-alejandro.lucero@netronome.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1530019761-27794-1-git-send-email-alejandro.lucero@netronome.com",
    "date": "2018-06-26T13:29:21",
    "name": "net/nfp: avoid access to sysfs resource0 file",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "de3338b255b13130e08c86c4bf3501c082445231",
    "submitter": {
        "id": 270,
        "url": "http://patches.dpdk.org/api/people/270/?format=api",
        "name": "Alejandro Lucero",
        "email": "alejandro.lucero@netronome.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1530019761-27794-1-git-send-email-alejandro.lucero@netronome.com/mbox/",
    "series": [
        {
            "id": 244,
            "url": "http://patches.dpdk.org/api/series/244/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=244",
            "date": "2018-06-26T13:29:21",
            "name": "net/nfp: avoid access to sysfs resource0 file",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/244/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/41573/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/41573/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id A92A01B5CA;\n\tTue, 26 Jun 2018 15:29:49 +0200 (CEST)",
            "from netronome.com (host-79-78-33-110.static.as9105.net\n\t[79.78.33.110]) by dpdk.org (Postfix) with ESMTP id A0F061B5C8\n\tfor <dev@dpdk.org>; Tue, 26 Jun 2018 15:29:48 +0200 (CEST)",
            "from netronome.com (localhost [127.0.0.1])\n\tby netronome.com (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id\n\tw5QDTLgZ027833 for <dev@dpdk.org>; Tue, 26 Jun 2018 14:29:21 +0100",
            "(from alucero@localhost)\n\tby netronome.com (8.14.4/8.14.4/Submit) id w5QDTLiX027832\n\tfor dev@dpdk.org; Tue, 26 Jun 2018 14:29:21 +0100"
        ],
        "From": "Alejandro Lucero <alejandro.lucero@netronome.com>",
        "To": "dev@dpdk.org",
        "Date": "Tue, 26 Jun 2018 14:29:21 +0100",
        "Message-Id": "<1530019761-27794-1-git-send-email-alejandro.lucero@netronome.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "Subject": "[dpdk-dev] [PATCH] net/nfp: avoid access to sysfs resource0 file",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "NFP CPP interface dinamically configures NFP CPP BARs for accessing\nany NFP chip component from user space. This requires to map PCI BAR\nregions specifically. However, this does not require to do such map\nover the usual map done by VFIO or UIO drivers with the device PCI\nBARs.\n\nThis patch avoids this remapping and therefore also avoids to access\nthe device sysfs resource0 file for doing that remapping.\n\nSigned-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>\n---\n drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c | 46 ++----------------------------\n 1 file changed, 3 insertions(+), 43 deletions(-)",
    "diff": "diff --git a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c\nindex b0beb8d..c68d940 100644\n--- a/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c\n+++ b/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c\n@@ -310,13 +310,8 @@ struct nfp_pcie_user {\n \t\tbar->csr = nfp->cfg +\n \t\t\t   NFP_PCIE_CFG_BAR_PCIETOCPPEXPBAR(bar->index >> 3,\n \t\t\t\t\t\t\t   bar->index & 7);\n-\t\tbar->iomem =\n-\t\t    (char *)mmap(0, 1 << bar->bitsize, PROT_READ | PROT_WRITE,\n-\t\t\t\t MAP_SHARED, nfp->device,\n-\t\t\t\t bar->index << bar->bitsize);\n \n-\t\tif (bar->iomem == MAP_FAILED)\n-\t\t\treturn (-ENOMEM);\n+\t\tbar->iomem = nfp->cfg + (bar->index << bar->bitsize);\n \t}\n \treturn 0;\n }\n@@ -346,7 +341,6 @@ struct nfp_pcie_user {\n \tfor (x = ARRAY_SIZE(nfp->bar); x > 0; x--) {\n \t\tbar = &nfp->bar[x - 1];\n \t\tif (bar->iomem) {\n-\t\t\tmunmap(bar->iomem, 1 << (nfp->barsz - 3));\n \t\t\tbar->iomem = NULL;\n \t\t\tbar->lock = 0;\n \t\t}\n@@ -779,9 +773,6 @@ struct nfp6000_area_priv {\n static int\n nfp6000_init(struct nfp_cpp *cpp, struct rte_pci_device *dev)\n {\n-\tchar link[120];\n-\tchar tmp_str[80];\n-\tssize_t size;\n \tint ret = 0;\n \tuint32_t model;\n \tstruct nfp_pcie_user *desc;\n@@ -800,39 +791,16 @@ struct nfp6000_area_priv {\n \t\t\treturn -1;\n \t}\n \n-\tsnprintf(tmp_str, sizeof(tmp_str), \"%s/%s/driver\", PCI_DEVICES,\n-\t\t desc->busdev);\n-\n-\tsize = readlink(tmp_str, link, sizeof(link));\n-\n-\tif (size == -1)\n-\t\ttmp_str[0] = '\\0';\n-\n-\tif (size == sizeof(link))\n-\t\ttmp_str[0] = '\\0';\n-\n-\tsnprintf(tmp_str, sizeof(tmp_str), \"%s/%s/resource0\", PCI_DEVICES,\n-\t\t desc->busdev);\n-\n-\tdesc->device = open(tmp_str, O_RDWR);\n-\tif (desc->device == -1)\n-\t\treturn -1;\n-\n \tif (nfp6000_set_model(dev, cpp) < 0)\n \t\treturn -1;\n \tif (nfp6000_set_interface(dev, cpp) < 0)\n \t\treturn -1;\n \tif (nfp6000_set_serial(dev, cpp) < 0)\n \t\treturn -1;\n-\tif (nfp6000_set_barsz(desc) < 0)\n+\tif (nfp6000_set_barsz(dev, desc) < 0)\n \t\treturn -1;\n \n-\tdesc->cfg = (char *)mmap(0, 1 << (desc->barsz - 3),\n-\t\t\t\t PROT_READ | PROT_WRITE,\n-\t\t\t\t MAP_SHARED, desc->device, 0);\n-\n-\tif (desc->cfg == MAP_FAILED)\n-\t\treturn -1;\n+\tdesc->cfg = (char *)dev->mem_resource[0].addr;\n \n \tnfp_enable_bars(desc);\n \n@@ -848,16 +816,8 @@ struct nfp6000_area_priv {\n nfp6000_free(struct nfp_cpp *cpp)\n {\n \tstruct nfp_pcie_user *desc = nfp_cpp_priv(cpp);\n-\tint x;\n \n-\t/* Unmap may cause if there are any pending transaxctions */\n \tnfp_disable_bars(desc);\n-\tmunmap(desc->cfg, 1 << (desc->barsz - 3));\n-\n-\tfor (x = ARRAY_SIZE(desc->bar); x > 0; x--) {\n-\t\tif (desc->bar[x - 1].iomem)\n-\t\t\tmunmap(desc->bar[x - 1].iomem, 1 << (desc->barsz - 3));\n-\t}\n \tif (cpp->driver_lock_needed)\n \t\tclose(desc->lock);\n \tclose(desc->device);\n",
    "prefixes": []
}