Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/964085/?format=api
{ "id": 964085, "url": "http://patchwork.ozlabs.org/api/patches/964085/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20180830185352.3369-11-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-11-logang@deltatee.com>", "list_archive_url": null, "date": "2018-08-30T18:53:49", "name": "[v5,10/13] nvme-pci: Add support for P2P memory in requests", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "7410d885c04f152d7f8e82a50d7adce9e647ed10", "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-11-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/964085/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/964085/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 421Wt64cDfz9s3C\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 31 Aug 2018 04:56:14 +1000 (AEST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1727955AbeH3W7q (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tThu, 30 Aug 2018 18:59:46 -0400", "from ale.deltatee.com ([207.54.116.67]:40074 \"EHLO\n\tale.deltatee.com\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1727178AbeH3W5l (ORCPT <rfc822;linux-pci@vger.kernel.org>);\n\tThu, 30 Aug 2018 18:57:41 -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-0006Op-BV; Thu, 30 Aug 2018 12:54:05 -0600", "from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim\n\t4.89) (envelope-from <gunthorp@deltatee.com>)\n\tid 1fvS4p-0000ti-4Q; 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:49 -0600", "Message-Id": "<20180830185352.3369-11-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.5 required=5.0 tests=ALL_TRUSTED,BAYES_00,\n\tGREYLIST_ISWHITE,MYRULES_FREE,MYRULES_NO_TEXT autolearn=ham\n\tautolearn_force=no version=3.4.1", "Subject": "[PATCH v5 10/13] nvme-pci: Add support for P2P memory in requests", "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": "For P2P requests, we must use the pci_p2pmem_map_sg() function\ninstead of the dma_map_sg functions.\n\nWith that, we can then indicate PCI_P2P support in the request queue.\nFor this, we create an NVME_F_PCI_P2P flag which tells the core to\nset QUEUE_FLAG_PCI_P2P in the request queue.\n\nSigned-off-by: Logan Gunthorpe <logang@deltatee.com>\nReviewed-by: Sagi Grimberg <sagi@grimberg.me>\nReviewed-by: Christoph Hellwig <hch@lst.de>\n---\n drivers/nvme/host/core.c | 4 ++++\n drivers/nvme/host/nvme.h | 1 +\n drivers/nvme/host/pci.c | 17 +++++++++++++----\n 3 files changed, 18 insertions(+), 4 deletions(-)", "diff": "diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c\nindex dd8ec1dd9219..6033ce2fd3e9 100644\n--- a/drivers/nvme/host/core.c\n+++ b/drivers/nvme/host/core.c\n@@ -3051,7 +3051,11 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)\n \tns->queue = blk_mq_init_queue(ctrl->tagset);\n \tif (IS_ERR(ns->queue))\n \t\tgoto out_free_ns;\n+\n \tblk_queue_flag_set(QUEUE_FLAG_NONROT, ns->queue);\n+\tif (ctrl->ops->flags & NVME_F_PCI_P2PDMA)\n+\t\tblk_queue_flag_set(QUEUE_FLAG_PCI_P2PDMA, ns->queue);\n+\n \tns->queue->queuedata = ns;\n \tns->ctrl = ctrl;\n \ndiff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h\nindex bb4a2003c097..4030743c90aa 100644\n--- a/drivers/nvme/host/nvme.h\n+++ b/drivers/nvme/host/nvme.h\n@@ -343,6 +343,7 @@ struct nvme_ctrl_ops {\n \tunsigned int flags;\n #define NVME_F_FABRICS\t\t\t(1 << 0)\n #define NVME_F_METADATA_SUPPORTED\t(1 << 1)\n+#define NVME_F_PCI_P2PDMA\t\t(1 << 2)\n \tint (*reg_read32)(struct nvme_ctrl *ctrl, u32 off, u32 *val);\n \tint (*reg_write32)(struct nvme_ctrl *ctrl, u32 off, u32 val);\n \tint (*reg_read64)(struct nvme_ctrl *ctrl, u32 off, u64 *val);\ndiff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c\nindex 2902585c6ddf..bb2120d30e39 100644\n--- a/drivers/nvme/host/pci.c\n+++ b/drivers/nvme/host/pci.c\n@@ -737,8 +737,13 @@ static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req,\n \t\tgoto out;\n \n \tret = BLK_STS_RESOURCE;\n-\tnr_mapped = dma_map_sg_attrs(dev->dev, iod->sg, iod->nents, dma_dir,\n-\t\t\tDMA_ATTR_NO_WARN);\n+\n+\tif (is_pci_p2pdma_page(sg_page(iod->sg)))\n+\t\tnr_mapped = pci_p2pdma_map_sg(dev->dev, iod->sg, iod->nents,\n+\t\t\t\t\t dma_dir);\n+\telse\n+\t\tnr_mapped = dma_map_sg_attrs(dev->dev, iod->sg, iod->nents,\n+\t\t\t\t\t dma_dir, DMA_ATTR_NO_WARN);\n \tif (!nr_mapped)\n \t\tgoto out;\n \n@@ -780,7 +785,10 @@ static void nvme_unmap_data(struct nvme_dev *dev, struct request *req)\n \t\t\tDMA_TO_DEVICE : DMA_FROM_DEVICE;\n \n \tif (iod->nents) {\n-\t\tdma_unmap_sg(dev->dev, iod->sg, iod->nents, dma_dir);\n+\t\t/* P2PDMA requests do not need to be unmapped */\n+\t\tif (!is_pci_p2pdma_page(sg_page(iod->sg)))\n+\t\t\tdma_unmap_sg(dev->dev, iod->sg, iod->nents, dma_dir);\n+\n \t\tif (blk_integrity_rq(req))\n \t\t\tdma_unmap_sg(dev->dev, &iod->meta_sg, 1, dma_dir);\n \t}\n@@ -2392,7 +2400,8 @@ static int nvme_pci_get_address(struct nvme_ctrl *ctrl, char *buf, int size)\n static const struct nvme_ctrl_ops nvme_pci_ctrl_ops = {\n \t.name\t\t\t= \"pcie\",\n \t.module\t\t\t= THIS_MODULE,\n-\t.flags\t\t\t= NVME_F_METADATA_SUPPORTED,\n+\t.flags\t\t\t= NVME_F_METADATA_SUPPORTED |\n+\t\t\t\t NVME_F_PCI_P2PDMA,\n \t.reg_read32\t\t= nvme_pci_reg_read32,\n \t.reg_write32\t\t= nvme_pci_reg_write32,\n \t.reg_read64\t\t= nvme_pci_reg_read64,\n", "prefixes": [ "v5", "10/13" ] }