Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757749AbdDRU31 convert rfc822-to-8bit (ORCPT ); Tue, 18 Apr 2017 16:29:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58672 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757445AbdDRU3Z (ORCPT ); Tue, 18 Apr 2017 16:29:25 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 09B6861D10 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=jglisse@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 09B6861D10 Date: Tue, 18 Apr 2017 16:29:12 -0400 (EDT) From: Jerome Glisse To: Dan Williams Cc: Logan Gunthorpe , Jason Gunthorpe , Benjamin Herrenschmidt , Bjorn Helgaas , Christoph Hellwig , Sagi Grimberg , "James E.J. Bottomley" , "Martin K. Petersen" , Jens Axboe , Steve Wise , Stephen Bates , Max Gurtovoy , Keith Busch , linux-pci@vger.kernel.org, linux-scsi , linux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org, linux-nvdimm , linux-kernel@vger.kernel.org Message-ID: <1565047873.28680036.1492547352121.JavaMail.zimbra@redhat.com> In-Reply-To: References: <1492381396.25766.43.camel@kernel.crashing.org> <20170418164557.GA7181@obsidianresearch.com> <20170418190138.GH7181@obsidianresearch.com> Subject: Re: [RFC 0/8] Copy Offload with Peer-to-Peer PCI Memory MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT X-Originating-IP: [10.10.122.182, 10.4.195.1] Thread-Topic: Copy Offload with Peer-to-Peer PCI Memory Thread-Index: vr0H2K/3MwBUYjYCMvk18EyEtdhpaA== X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 18 Apr 2017 20:29:14 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1185 Lines: 27 > On Tue, Apr 18, 2017 at 12:35 PM, Logan Gunthorpe > wrote: > > > > > > On 18/04/17 01:01 PM, Jason Gunthorpe wrote: > >> Ultimately every dma_ops will need special code to support P2P with > >> the special hardware that ops is controlling, so it makes some sense > >> to start by pushing the check down there in the first place. This > >> advice is partially motivated by how dma_map_sg is just a small > >> wrapper around the function pointer call... > > > > Yes, I noticed this problem too and that makes sense. It just means > > every dma_ops will probably need to be modified to either support p2p > > pages or fail on them. Though, the only real difficulty there is that it > > will be a lot of work. > > I don't think you need to go touch all dma_ops, I think you can just > arrange for devices that are going to do dma to get redirected to a > p2p aware provider of operations that overrides the system default > dma_ops. I.e. just touch get_dma_ops(). This would not work well for everyone, for instance on GPU we usualy have buffer object with a mix of device memory and regular system memory but call dma sg map once for the list. Cheers, Jérôme