Received: by 2002:a4a:301c:0:0:0:0:0 with SMTP id q28-v6csp1192112oof; Tue, 25 Sep 2018 09:25:09 -0700 (PDT) X-Google-Smtp-Source: ACcGV61QFmRQOnQ0NrjXt1LPUeLisXp/ajrenBmrOrJRu+HqcKolbq8RtiXhGPFAMYBCX3FiNTqz X-Received: by 2002:a17:902:a5cc:: with SMTP id t12-v6mr1961214plq.229.1537892709882; Tue, 25 Sep 2018 09:25:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537892709; cv=none; d=google.com; s=arc-20160816; b=00aW75N8I5FJ75Z3XzQj07hn6zdFmx+Rk2V38unk2eHyC0n5OXmFBEHlilSI7qDHB8 Mq5wu8ahVc2Es8/g29BZKGFfi3PV5xd36FvbqfWUlEkYNK8YwLCO6Rkf9G6KKO7pOJYy UCDKogHR20T4WCiZYoE0dTLfmMF12HB400h8/Tv5i5qHltrVtAfSa3Q7M1xhP1/N+4hc VuBQzG8Yn6DZt+sED+8Hue9zm5J9ZTNlVA+9aj5thVt4VVqotHWRFqeJu3WnST6hlvVB Ojd+7u0gy+8jHaNRfnjNtE7TrO6q2fBwaozreQjHe2KUVdAJNYiQa3Hw23RCkxdEvhxf 9cnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:subject:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:cc:to:from; bh=KIQTmMX9o3Aei9QtQuyS1K9aIZW4GDiLMdPcT64Sl+s=; b=ZiBALXiPe1aWnG+/Xl0fWlv+TuENkO5u6H5T2eaTvwXdsi41bxQN7fSFUEIXwFR+I7 RDrxPRS4aYdokZH+CJU4c5lh5pa4jj6nGCdJrFql7F7g9X5zgyOaywhKC/ME0aigtsof xrLuabZLwtnmjOGZYJjv3JEWBLlnpo8FtqxJfjaGiDKc9dbz2VN3rTC0E8Y6dCTgQ2Bs 81n0IlMq/NuIzIXq8aj1AIqMReHMgNcTAQKw8UpwuwoV8IydM7i/wf4nSC3Cgn0kD3Uw wjtWtcnJf1kvuOEpls1ZDWP40HwVJYsq9vmq24sdIeujJZe77VO3O9IHoMJx8zljAFC0 LXrQ== 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 d10-v6si2850914pls.118.2018.09.25.09.24.54; Tue, 25 Sep 2018 09:25:09 -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 S1730022AbeIYWcS (ORCPT + 99 others); Tue, 25 Sep 2018 18:32:18 -0400 Received: from ale.deltatee.com ([207.54.116.67]:42702 "EHLO ale.deltatee.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729655AbeIYWbI (ORCPT ); Tue, 25 Sep 2018 18:31:08 -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 1g4q6p-0002fM-OI; Tue, 25 Sep 2018 10:22:51 -0600 Received: from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim 4.89) (envelope-from ) id 1g4q6d-00019W-0X; Tue, 25 Sep 2018 10:22:35 -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?= , Jens Axboe , Logan Gunthorpe Date: Tue, 25 Sep 2018 10:22:26 -0600 Message-Id: <20180925162231.4354-9-logang@deltatee.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20180925162231.4354-1-logang@deltatee.com> References: <20180925162231.4354-1-logang@deltatee.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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, axboe@kernel.dk, 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=-8.7 required=5.0 tests=ALL_TRUSTED,BAYES_00, GREYLIST_ISWHITE,MYRULES_NO_TEXT autolearn=ham autolearn_force=no version=3.4.1 Subject: [PATCH v7 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 Reviewed-by: Sagi Grimberg --- 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.19.0