Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/964070/?format=api
{ "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" ] }