Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp204937imm; Thu, 30 Aug 2018 11:57:22 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZKvw3FooJUUf6/rlTU329TA7wfn+Jfg3eRZWjbnR5iDLD4rFxSw5b6vH0NpxzFNDr+z0dA X-Received: by 2002:a17:902:4201:: with SMTP id g1-v6mr11568925pld.203.1535655442569; Thu, 30 Aug 2018 11:57:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535655442; cv=none; d=google.com; s=arc-20160816; b=0+neKhqajwh9607ONXtz93A/Ator0gWL5Vpx0VLwDtM8t8oEN7CCP0iWuvqA0Wfs8G tDBiUfUwC9GRSP4g0ampM0GVVtcCvAMqga8l5DXxjf7HJn0fXQyQkrSm70CZVFmVOreI gNibMZRcsLlJV9PwL77gQsBDBlvlCRJTFljPF1MwcJKxFW4tL8zKRTfQvFDmJEnavmxh +pd4ThXj4jIZkmmVOVDoYq4NC4iz9zGYFkb0ILZwFOW1DxYguGh5Ys6Tj0DANNsk+Hyz vmaJfqy54uF3XD6ve4rw0fq2Yp3fq6R2OueXta51yLqB//PmY8idXIpzMN/0mwOPchqZ Uqkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:subject:references:in-reply-to:message-id :date:cc:to:from:arc-authentication-results; bh=jZh2Euwwf1+QJ32rHD/QDVsvVgOADdzDlht0pIxltTw=; b=0fYaijaFXh64e+0kBOyDZ8vTDcmzxhBIn/ltrUNGLM/CQj0koPV0gDITl55GrCFBQM ERJparM7Ms8dBiROkG1fxy9/tj07cASLRJrJJOrvXQ6gcUW91cyBUritgz8aF9SBgQQf 7OCrnJQzjEwhETX9naWe2Xyh+WC2kkHWqIJ6LtGdQvSVSSJECU69TPpklriOQPiTGmBt +duGjFCVJxzAt+fb2vDlQHo5LlhI238DMFidlkCDV/qLH3I8xtF4mvDREg0+MkFAZcGw jd3+Vlf0KHXd49OSw05ZFwiBD63AbcaIeG9ZXYYvav146KgFzD/2maGzqUVgzFh3kUP5 DlVA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d13-v6si6833573plr.196.2018.08.30.11.57.07; Thu, 30 Aug 2018 11:57:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728088AbeH3W6e (ORCPT + 99 others); Thu, 30 Aug 2018 18:58:34 -0400 Received: from ale.deltatee.com ([207.54.116.67]:40060 "EHLO ale.deltatee.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727359AbeH3W5l (ORCPT ); Thu, 30 Aug 2018 18:57:41 -0400 Received: from cgy1-donard.priv.deltatee.com ([172.16.1.31]) by ale.deltatee.com with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1fvS4t-0006On-Nd; Thu, 30 Aug 2018 12:54:02 -0600 Received: from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim 4.89) (envelope-from ) id 1fvS4o-0000tc-UC; Thu, 30 Aug 2018 12:53:54 -0600 From: Logan Gunthorpe To: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org, linux-nvdimm@lists.01.org, linux-block@vger.kernel.org Cc: Stephen Bates , Christoph Hellwig , Keith Busch , Sagi Grimberg , Bjorn Helgaas , Jason Gunthorpe , Max Gurtovoy , Dan Williams , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Benjamin Herrenschmidt , Alex Williamson , =?UTF-8?q?Christian=20K=C3=B6nig?= , Logan Gunthorpe Date: Thu, 30 Aug 2018 12:53:47 -0600 Message-Id: <20180830185352.3369-9-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, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-rdma@vger.kernel.org, linux-block@vger.kernel.org, sbates@raithlin.com, hch@lst.de, sagi@grimberg.me, bhelgaas@google.com, jgg@mellanox.com, maxg@mellanox.com, keith.busch@intel.com, dan.j.williams@intel.com, benh@kernel.crashing.org, jglisse@redhat.com, alex.williamson@redhat.com, christian.koenig@amd.com, logang@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=-6.7 required=5.0 tests=ALL_TRUSTED,BAYES_00, MYRULES_NO_TEXT autolearn=no autolearn_force=no version=3.4.1 Subject: [PATCH v5 08/13] IB/core: Ensure we map P2P memory correctly in rdma_rw_ctx_[init|destroy]() 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-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In order to use PCI P2P memory the pci_p2pmem_map_sg() function must be called to map the correct PCI bus address. To do this, check the first page in the scatter list to see if it is P2P memory or not. At the moment, scatter lists that contain P2P memory must be homogeneous so if the first page is P2P the entire SGL should be P2P. Signed-off-by: Logan Gunthorpe Reviewed-by: Christoph Hellwig --- drivers/infiniband/core/rw.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/core/rw.c b/drivers/infiniband/core/rw.c index 683e6d11a564..d22c4a2ebac6 100644 --- a/drivers/infiniband/core/rw.c +++ b/drivers/infiniband/core/rw.c @@ -12,6 +12,7 @@ */ #include #include +#include #include #include @@ -280,7 +281,11 @@ int rdma_rw_ctx_init(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u8 port_num, struct ib_device *dev = qp->pd->device; int ret; - ret = ib_dma_map_sg(dev, sg, sg_cnt, dir); + if (is_pci_p2pdma_page(sg_page(sg))) + ret = pci_p2pdma_map_sg(dev->dma_device, sg, sg_cnt, dir); + else + ret = ib_dma_map_sg(dev, sg, sg_cnt, dir); + if (!ret) return -ENOMEM; sg_cnt = ret; @@ -602,7 +607,9 @@ void rdma_rw_ctx_destroy(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u8 port_num, break; } - ib_dma_unmap_sg(qp->pd->device, sg, sg_cnt, dir); + /* P2PDMA contexts do not need to be unmapped */ + if (!is_pci_p2pdma_page(sg_page(sg))) + ib_dma_unmap_sg(qp->pd->device, sg, sg_cnt, dir); } EXPORT_SYMBOL(rdma_rw_ctx_destroy); -- 2.11.0