Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp7076imm; Thu, 4 Oct 2018 14:30:08 -0700 (PDT) X-Google-Smtp-Source: ACcGV62zflf2OB9mQkbHA2N9GoeMjL4mxcifIQ7HTfe5oyEf47e5t+jLFViMYzhWfZWUYEGM8VG1 X-Received: by 2002:a17:902:b712:: with SMTP id d18-v6mr8416393pls.53.1538688608595; Thu, 04 Oct 2018 14:30:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538688608; cv=none; d=google.com; s=arc-20160816; b=JBnstz+lAwEJLFYDeJnU0KPC3wDTCN0OwFJ88GAkYKJAk8tF4XVfm0Fr9njT0D3/c6 l5G/mSOtMxlp3xVEKe8bp2OWo6b78V1szfvldnTc2HTL8ub1qFRd5NMc2R9JXQaH13pB BWljYKQ2trwgHrn21zJkXWoc50UajEQdc39pE3M2tZyGfQOyYSLoxzoJLVbpCjpG+RFQ OxmBB2xgvUx1S3fiYj+gGe9u3aYenAPTaSLymS/6MuMyzqHDaaIWLknkq8dsL0HqwOaN WORS2U8+KWCW4oyzh4BfH/3yG8IK+NtkI1cqOjZJgWrztGCQ00J7DYkwopw1zPFTYW1N rmeg== 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=TfCAgickdFs7AuDNjR55HMyKlvl66qw2gZsAQtNfc1XEbo38ARyZgjVIFET3SW7162 hUteI2E14HLxDexcrHSNRUxVLEor9r5y3ZM5oedXa0yopGDrfF/Ks4V4bDPIPCPI4glU pJqqhxtplcFH7dmGzHFQgoSxukN9egj+ZdF1ENdUGtq+NMQx8fzqBlUGmYLU+rH2mDNi gdvn5u5/VwNGNrpHs3K3atv1jfY7OYAFIlx4W8FA9+x6k7SP0nPjlVbpZXPUu9uHMcWw TFF5gaTSP5dLoc0HiyMFOUToBlGuaJpmGAo8tLJ63lSQrV/vTm0YqhXo3UFK/kcMtnNl 9Bqg== 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 g67-v6si1992005pfb.3.2018.10.04.14.29.52; Thu, 04 Oct 2018 14:30:08 -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 S1728234AbeJEEXb (ORCPT + 99 others); Fri, 5 Oct 2018 00:23:31 -0400 Received: from ale.deltatee.com ([207.54.116.67]:52966 "EHLO ale.deltatee.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725893AbeJEEXR (ORCPT ); Fri, 5 Oct 2018 00:23:17 -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 1g8BA2-0002Yj-PM; Thu, 04 Oct 2018 15:28:03 -0600 Received: from gunthorp by cgy1-donard.priv.deltatee.com with local (Exim 4.89) (envelope-from ) id 1g8B9y-0001ev-Aj; Thu, 04 Oct 2018 15:27:50 -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: Thu, 4 Oct 2018 15:27:42 -0600 Message-Id: <20181004212747.6301-9-logang@deltatee.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181004212747.6301-1-logang@deltatee.com> References: <20181004212747.6301-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 v9 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