From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bjorn Helgaas Subject: Re: [RFC 0/8] Copy Offload with Peer-to-Peer PCI Memory Date: Thu, 13 Apr 2017 18:26:31 -0500 Message-ID: <20170413232631.GB24910@bhelgaas-glaptop.roam.corp.google.com> References: <1490911959-5146-1-git-send-email-logang@deltatee.com> <1491974532.7236.43.camel@kernel.crashing.org> <5ac22496-56ec-025d-f153-140001d2a7f9@deltatee.com> <1492034124.7236.77.camel@kernel.crashing.org> <81888a1e-eb0d-cbbc-dc66-0a09c32e4ea2@deltatee.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <81888a1e-eb0d-cbbc-dc66-0a09c32e4ea2-OTvnGxWRz7hWk0Htik3J/w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-nvdimm-bounces-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org Sender: "Linux-nvdimm" To: Logan Gunthorpe Cc: Jens Axboe , Jason Gunthorpe , "James E.J. Bottomley" , "Martin K. Petersen" , linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Benjamin Herrenschmidt , Steve Wise , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Keith Busch , Jerome Glisse , linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-nvdimm-y27Ovi1pjclAfugRpC6u6w@public.gmane.org, Max Gurtovoy , linux-scsi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Christoph Hellwig List-Id: linux-nvdimm@lists.01.org On Thu, Apr 13, 2017 at 03:22:06PM -0600, Logan Gunthorpe wrote: > > > On 12/04/17 03:55 PM, Benjamin Herrenschmidt wrote: > > Look at pcibios_resource_to_bus() and pcibios_bus_to_resource(). They > > will perform the conversion between the struct resource content (CPU > > physical address) and the actual PCI bus side address. > > Ah, thanks for the tip! On my system, this translation returns the same > address so it was not necessary. And, yes, that means this would have to > find its way into the dma mapping routine somehow. This means we'll > eventually need a way to look-up the p2pmem device from the struct page. > Which means we will likely need a new flag bit in the struct page or > something. The big difficulty I see is testing. Do you know what > architectures or in what circumstances are these translations used? Any caller of pci_add_resource_offset() uses CPU addresses different from the PCI bus addresses (unless the offset is zero, of course). All ACPI platforms also support this translation (see "translation_offset"), though in most x86 systems the offset is zero. I'm aware of one x86 system that was tested with a non-zero offset but I don't think it was shipped that way. Bjorn From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752864AbdDMX0j (ORCPT ); Thu, 13 Apr 2017 19:26:39 -0400 Received: from mail.kernel.org ([198.145.29.136]:45012 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752040AbdDMX0g (ORCPT ); Thu, 13 Apr 2017 19:26:36 -0400 Date: Thu, 13 Apr 2017 18:26:31 -0500 From: Bjorn Helgaas To: Logan Gunthorpe Cc: Benjamin Herrenschmidt , Christoph Hellwig , Sagi Grimberg , "James E.J. Bottomley" , "Martin K. Petersen" , Jens Axboe , Steve Wise , Stephen Bates , Max Gurtovoy , Dan Williams , Keith Busch , Jason Gunthorpe , linux-pci@vger.kernel.org, linux-scsi@vger.kernel.org, linux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org, linux-nvdimm@ml01.01.org, linux-kernel@vger.kernel.org, Jerome Glisse Subject: Re: [RFC 0/8] Copy Offload with Peer-to-Peer PCI Memory Message-ID: <20170413232631.GB24910@bhelgaas-glaptop.roam.corp.google.com> References: <1490911959-5146-1-git-send-email-logang@deltatee.com> <1491974532.7236.43.camel@kernel.crashing.org> <5ac22496-56ec-025d-f153-140001d2a7f9@deltatee.com> <1492034124.7236.77.camel@kernel.crashing.org> <81888a1e-eb0d-cbbc-dc66-0a09c32e4ea2@deltatee.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <81888a1e-eb0d-cbbc-dc66-0a09c32e4ea2@deltatee.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 13, 2017 at 03:22:06PM -0600, Logan Gunthorpe wrote: > > > On 12/04/17 03:55 PM, Benjamin Herrenschmidt wrote: > > Look at pcibios_resource_to_bus() and pcibios_bus_to_resource(). They > > will perform the conversion between the struct resource content (CPU > > physical address) and the actual PCI bus side address. > > Ah, thanks for the tip! On my system, this translation returns the same > address so it was not necessary. And, yes, that means this would have to > find its way into the dma mapping routine somehow. This means we'll > eventually need a way to look-up the p2pmem device from the struct page. > Which means we will likely need a new flag bit in the struct page or > something. The big difficulty I see is testing. Do you know what > architectures or in what circumstances are these translations used? Any caller of pci_add_resource_offset() uses CPU addresses different from the PCI bus addresses (unless the offset is zero, of course). All ACPI platforms also support this translation (see "translation_offset"), though in most x86 systems the offset is zero. I'm aware of one x86 system that was tested with a non-zero offset but I don't think it was shipped that way. Bjorn From mboxrd@z Thu Jan 1 00:00:00 1970 From: helgaas@kernel.org (Bjorn Helgaas) Date: Thu, 13 Apr 2017 18:26:31 -0500 Subject: [RFC 0/8] Copy Offload with Peer-to-Peer PCI Memory In-Reply-To: <81888a1e-eb0d-cbbc-dc66-0a09c32e4ea2@deltatee.com> References: <1490911959-5146-1-git-send-email-logang@deltatee.com> <1491974532.7236.43.camel@kernel.crashing.org> <5ac22496-56ec-025d-f153-140001d2a7f9@deltatee.com> <1492034124.7236.77.camel@kernel.crashing.org> <81888a1e-eb0d-cbbc-dc66-0a09c32e4ea2@deltatee.com> Message-ID: <20170413232631.GB24910@bhelgaas-glaptop.roam.corp.google.com> On Thu, Apr 13, 2017@03:22:06PM -0600, Logan Gunthorpe wrote: > > > On 12/04/17 03:55 PM, Benjamin Herrenschmidt wrote: > > Look at pcibios_resource_to_bus() and pcibios_bus_to_resource(). They > > will perform the conversion between the struct resource content (CPU > > physical address) and the actual PCI bus side address. > > Ah, thanks for the tip! On my system, this translation returns the same > address so it was not necessary. And, yes, that means this would have to > find its way into the dma mapping routine somehow. This means we'll > eventually need a way to look-up the p2pmem device from the struct page. > Which means we will likely need a new flag bit in the struct page or > something. The big difficulty I see is testing. Do you know what > architectures or in what circumstances are these translations used? Any caller of pci_add_resource_offset() uses CPU addresses different from the PCI bus addresses (unless the offset is zero, of course). All ACPI platforms also support this translation (see "translation_offset"), though in most x86 systems the offset is zero. I'm aware of one x86 system that was tested with a non-zero offset but I don't think it was shipped that way. Bjorn