get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 964070,
    "url": "http://patchwork.ozlabs.org/api/patches/964070/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20180830185352.3369-12-logang@deltatee.com/",
    "project": {
        "id": 28,
        "url": "http://patchwork.ozlabs.org/api/projects/28/?format=api",
        "name": "Linux PCI development",
        "link_name": "linux-pci",
        "list_id": "linux-pci.vger.kernel.org",
        "list_email": "linux-pci@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20180830185352.3369-12-logang@deltatee.com>",
    "list_archive_url": null,
    "date": "2018-08-30T18:53:50",
    "name": "[v5,11/13] nvme-pci: Add a quirk for a pseudo CMB",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": false,
    "hash": "03559132cc6e5a3018aae86fd62cdda3df8873ca",
    "submitter": {
        "id": 70191,
        "url": "http://patchwork.ozlabs.org/api/people/70191/?format=api",
        "name": "Logan Gunthorpe",
        "email": "logang@deltatee.com"
    },
    "delegate": {
        "id": 6763,
        "url": "http://patchwork.ozlabs.org/api/users/6763/?format=api",
        "username": "bhelgaas",
        "first_name": "Bjorn",
        "last_name": "Helgaas",
        "email": "bhelgaas@google.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20180830185352.3369-12-logang@deltatee.com/mbox/",
    "series": [
        {
            "id": 63352,
            "url": "http://patchwork.ozlabs.org/api/series/63352/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=63352",
            "date": "2018-08-30T18:53:41",
            "name": "Copy Offload in NVMe Fabrics with P2P PCI Memory",
            "version": 5,
            "mbox": "http://patchwork.ozlabs.org/series/63352/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/964070/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/964070/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<linux-pci-owner@vger.kernel.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-pci-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dmarc=none (p=none dis=none)\n\theader.from=deltatee.com"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 421Wqw0sPmz9s3Z\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 31 Aug 2018 04:54:20 +1000 (AEST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1728003AbeH3W5q (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tThu, 30 Aug 2018 18:57:46 -0400",
            "from ale.deltatee.com ([207.54.116.67]:40154 \"EHLO\n\tale.deltatee.com\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1727978AbeH3W5p (ORCPT <rfc822;linux-pci@vger.kernel.org>);\n\tThu, 30 Aug 2018 18:57:45 -0400",
            "from cgy1-donard.priv.deltatee.com ([172.16.1.31])\n\tby ale.deltatee.com with esmtps\n\t(TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)\n\t(envelope-from <gunthorp@deltatee.com>)\n\tid 1fvS4u-0006Oq-Cw; Thu, 30 Aug 2018 12:54:10 -0600",
            "from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim\n\t4.89) (envelope-from <gunthorp@deltatee.com>)\n\tid 1fvS4p-0000tl-7P; Thu, 30 Aug 2018 12:53:55 -0600"
        ],
        "From": "Logan Gunthorpe <logang@deltatee.com>",
        "To": "linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,\n\tlinux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org,\n\tlinux-nvdimm@lists.01.org, linux-block@vger.kernel.org",
        "Cc": "Stephen Bates <sbates@raithlin.com>, Christoph Hellwig <hch@lst.de>,\n\tKeith Busch <keith.busch@intel.com>, Sagi Grimberg <sagi@grimberg.me>,\n\tBjorn Helgaas <bhelgaas@google.com>, Jason Gunthorpe <jgg@mellanox.com>, \n\tMax Gurtovoy <maxg@mellanox.com>,\n\tDan Williams <dan.j.williams@intel.com>, =?utf-8?b?SsOpcsO0bWUgR2xp?=\n\t=?utf-8?q?sse?= <jglisse@redhat.com>,\n\tBenjamin Herrenschmidt <benh@kernel.crashing.org>, Alex Williamson\n\t<alex.williamson@redhat.com>, =?utf-8?q?Christian_K=C3=B6nig?=\n\t<christian.koenig@amd.com>, Logan Gunthorpe <logang@deltatee.com>",
        "Date": "Thu, 30 Aug 2018 12:53:50 -0600",
        "Message-Id": "<20180830185352.3369-12-logang@deltatee.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "In-Reply-To": "<20180830185352.3369-1-logang@deltatee.com>",
        "References": "<20180830185352.3369-1-logang@deltatee.com>",
        "X-SA-Exim-Connect-IP": "172.16.1.31",
        "X-SA-Exim-Rcpt-To": "linux-nvme@lists.infradead.org, linux-nvdimm@lists.01.org,\n\tlinux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,\n\tlinux-rdma@vger.kernel.org, linux-block@vger.kernel.org,\n\tsbates@raithlin.com, hch@lst.de, sagi@grimberg.me,\n\tbhelgaas@google.com, jgg@mellanox.com, maxg@mellanox.com,\n\tkeith.busch@intel.com, dan.j.williams@intel.com,\n\tbenh@kernel.crashing.org, jglisse@redhat.com,\n\talex.williamson@redhat.com, christian.koenig@amd.com,\n\tlogang@deltatee.com",
        "X-SA-Exim-Mail-From": "gunthorp@deltatee.com",
        "X-Spam-Checker-Version": "SpamAssassin 3.4.1 (2015-04-28) on ale.deltatee.com",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-8.7 required=5.0 tests=ALL_TRUSTED,BAYES_00,\n\tGREYLIST_ISWHITE,MYRULES_NO_TEXT autolearn=ham autolearn_force=no\n\tversion=3.4.1",
        "Subject": "[PATCH v5 11/13] nvme-pci: Add a quirk for a pseudo CMB",
        "X-SA-Exim-Version": "4.2.1 (built Tue, 02 Aug 2016 21:08:31 +0000)",
        "X-SA-Exim-Scanned": "Yes (on ale.deltatee.com)",
        "Sender": "linux-pci-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<linux-pci.vger.kernel.org>",
        "X-Mailing-List": "linux-pci@vger.kernel.org"
    },
    "content": "Introduce a quirk to use CMB-like memory on older devices that have\nan exposed BAR but do not advertise support for using CMBLOC and\nCMBSIZE.\n\nWe'd like to use some of these older cards to test P2P memory.\n\nSigned-off-by: Logan Gunthorpe <logang@deltatee.com>\nReviewed-by: Sagi Grimberg <sagi@grimberg.me>\n---\n drivers/nvme/host/nvme.h |  7 +++++++\n drivers/nvme/host/pci.c  | 24 ++++++++++++++++++++----\n 2 files changed, 27 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h\nindex 4030743c90aa..8e6f3bcfe956 100644\n--- a/drivers/nvme/host/nvme.h\n+++ b/drivers/nvme/host/nvme.h\n@@ -90,6 +90,13 @@ enum nvme_quirks {\n \t * Set MEDIUM priority on SQ creation\n \t */\n \tNVME_QUIRK_MEDIUM_PRIO_SQ\t\t= (1 << 7),\n+\n+\t/*\n+\t * Pseudo CMB Support on BAR 4. For adapters like the Microsemi\n+\t * NVRAM that have CMB-like memory on a BAR but does not set\n+\t * CMBLOC or CMBSZ.\n+\t */\n+\tNVME_QUIRK_PSEUDO_CMB_BAR4\t\t= (1 << 8),\n };\n \n /*\ndiff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c\nindex bb2120d30e39..f898f2ab1420 100644\n--- a/drivers/nvme/host/pci.c\n+++ b/drivers/nvme/host/pci.c\n@@ -1636,6 +1636,13 @@ static ssize_t nvme_cmb_show(struct device *dev,\n }\n static DEVICE_ATTR(cmb, S_IRUGO, nvme_cmb_show, NULL);\n \n+static u32 nvme_pseudo_cmbsz(struct pci_dev *pdev, int bar)\n+{\n+\treturn NVME_CMBSZ_WDS | NVME_CMBSZ_RDS |\n+\t\t(((ilog2(SZ_16M) - 12) / 4) << NVME_CMBSZ_SZU_SHIFT) |\n+\t\t((pci_resource_len(pdev, bar) / SZ_16M) << NVME_CMBSZ_SZ_SHIFT);\n+}\n+\n static u64 nvme_cmb_size_unit(struct nvme_dev *dev)\n {\n \tu8 szu = (dev->cmbsz >> NVME_CMBSZ_SZU_SHIFT) & NVME_CMBSZ_SZU_MASK;\n@@ -1655,10 +1662,15 @@ static void nvme_map_cmb(struct nvme_dev *dev)\n \tstruct pci_dev *pdev = to_pci_dev(dev->dev);\n \tint bar;\n \n-\tdev->cmbsz = readl(dev->bar + NVME_REG_CMBSZ);\n-\tif (!dev->cmbsz)\n-\t\treturn;\n-\tdev->cmbloc = readl(dev->bar + NVME_REG_CMBLOC);\n+\tif (dev->ctrl.quirks & NVME_QUIRK_PSEUDO_CMB_BAR4) {\n+\t\tdev->cmbsz = nvme_pseudo_cmbsz(pdev, 4);\n+\t\tdev->cmbloc = 4;\n+\t} else {\n+\t\tdev->cmbsz = readl(dev->bar + NVME_REG_CMBSZ);\n+\t\tif (!dev->cmbsz)\n+\t\t\treturn;\n+\t\tdev->cmbloc = readl(dev->bar + NVME_REG_CMBLOC);\n+\t}\n \n \tsize = nvme_cmb_size_unit(dev) * nvme_cmb_size(dev);\n \toffset = nvme_cmb_size_unit(dev) * NVME_CMB_OFST(dev->cmbloc);\n@@ -2707,6 +2719,10 @@ static const struct pci_device_id nvme_id_table[] = {\n \t\t.driver_data = NVME_QUIRK_LIGHTNVM, },\n \t{ PCI_DEVICE(0x1d1d, 0x2601),\t/* CNEX Granby */\n \t\t.driver_data = NVME_QUIRK_LIGHTNVM, },\n+\t{ PCI_DEVICE(0x11f8, 0xf117),\t/* Microsemi NVRAM adaptor */\n+\t\t.driver_data = NVME_QUIRK_PSEUDO_CMB_BAR4, },\n+\t{ PCI_DEVICE(0x1db1, 0x0002),\t/* Everspin nvNitro adaptor */\n+\t\t.driver_data = NVME_QUIRK_PSEUDO_CMB_BAR4,  },\n \t{ PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_EXPRESS, 0xffffff) },\n \t{ PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001) },\n \t{ PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2003) },\n",
    "prefixes": [
        "v5",
        "11/13"
    ]
}