linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Christian König" <christian.koenig@amd.com>
To: Jerome Glisse <jglisse@redhat.com>, Stephen Bates <sbates@raithlin.com>
Cc: Logan Gunthorpe <logang@deltatee.com>,
	Jason Gunthorpe <jgunthorpe@obsidianresearch.com>,
	<david1.zhou@amd.com>, <qiang.yu@amd.com>,
	"'linux-rdma@vger.kernel.org'" <linux-rdma@vger.kernel.org>,
	"'linux-nvdimm@lists.01.org'" <linux-nvdimm@ml01.01.org>,
	"Kuehling, Felix" <felix.kuehling@amd.com>,
	Serguei Sagalovitch <serguei.sagalovitch@amd.com>,
	"'linux-kernel@vger.kernel.org'" <linux-kernel@vger.kernel.org>,
	"'dri-devel@lists.freedesktop.org'"
	<dri-devel@lists.freedesktop.org>, <hch@infradead.org>,
	"Deucher, Alexander" <alexander.deucher@amd.com>,
	"Sander, Ben" <ben.sander@amd.com>,
	"Suthikulpanit, Suravee" <suravee.suthikulpanit@amd.com>,
	"'linux-pci@vger.kernel.org'" <linux-pci@vger.kernel.org>,
	Jerome Glisse <j.glisse@gmail.com>,
	"Blinzer, Paul" <paul.blinzer@amd.com>,
	"'Linux-media@vger.kernel.org'" <linux-media@vger.kernel.org>
Subject: Re: Enabling peer to peer device transactions for PCIe devices
Date: Fri, 13 Jan 2017 14:04:30 +0100	[thread overview]
Message-ID: <0733efde-1a6e-5237-0868-e9fb31f237c7@amd.com> (raw)
In-Reply-To: <20170112151129.GA10942@redhat.com>

Am 12.01.2017 um 16:11 schrieb Jerome Glisse:
> On Wed, Jan 11, 2017 at 10:54:39PM -0600, Stephen Bates wrote:
>> On Fri, January 6, 2017 4:10 pm, Logan Gunthorpe wrote:
>>>
>>> On 06/01/17 11:26 AM, Jason Gunthorpe wrote:
>>>
>>>
>>>> Make a generic API for all of this and you'd have my vote..
>>>>
>>>>
>>>> IMHO, you must support basic pinning semantics - that is necessary to
>>>> support generic short lived DMA (eg filesystem, etc). That hardware can
>>>> clearly do that if it can support ODP.
>>> I agree completely.
>>>
>>>
>>> What we want is for RDMA, O_DIRECT, etc to just work with special VMAs
>>> (ie. at least those backed with ZONE_DEVICE memory). Then
>>> GPU/NVME/DAX/whatever drivers can just hand these VMAs to userspace
>>> (using whatever interface is most appropriate) and userspace can do what
>>> it pleases with them. This makes _so_ much sense and actually largely
>>> already works today (as demonstrated by iopmem).
>> +1 for iopmem ;-)
>>
>> I feel like we are going around and around on this topic. I would like to
>> see something that is upstream that enables P2P even if it is only the
>> minimum viable useful functionality to begin. I think aiming for the moon
>> (which is what HMM and things like it are) are simply going to take more
>> time if they ever get there.
>>
>> There is a use case for in-kernel P2P PCIe transfers between two NVMe
>> devices and between an NVMe device and an RDMA NIC (using NVMe CMBs or
>> BARs on the NIC). I am even seeing users who now want to move data P2P
>> between FPGAs and NVMe SSDs and the upstream kernel should be able to
>> support these users or they will look elsewhere.
>>
>> The iopmem patchset addressed all the use cases above and while it is not
>> an in kernel API it could have been modified to be one reasonably easily.
>> As Logan states the driver can then choose to pass the VMAs to user-space
>> in a manner that makes sense.
>>
>> Earlier in the thread someone mentioned LSF/MM. There is already a
>> proposal to discuss this topic so if you are interested please respond to
>> the email letting the committee know this topic is of interest to you [1].
>>
>> Also earlier in the thread someone discussed the issues around the IOMMU.
>> Given the known issues around P2P transfers in certain CPU root complexes
>> [2] it might just be a case of only allowing P2P when a PCIe switch
>> connects the two EPs. Another option is just to use CONFIG_EXPERT and make
>> sure people are aware of the pitfalls if they invoke the P2P option.
>
> iopmem is not applicable to GPU what i propose is to split the issue in 2
> so that everyone can reuse the part that needs to be common namely the DMA
> API part where you have to create IOMMU mapping for one device to point
> to the other device memory.
>
> We can have a DMA API that is agnostic to how the device memory is manage
> (so does not matter if device memory have struct page or not). This what
> i have been arguing in this thread. To make progress on this issue we need
> to stop conflicting different use case.
>
> So i say let solve the IOMMU issue first and let everyone use it in their
> own way with their device. I do not think we can share much more than
> that.

Yeah, exactly what I said from the very beginning as well. Just hacking 
together quick solutions doesn't really solve the problem in the long term.

What we need is proper adjusting of the DMA API towards handling of P2P 
and then build solutions for the different use cases on top of that.

We should also avoid falling into the trap of trying to just handle the 
existing get_user_pages and co interfaces so that the existing code 
doesn't need to change. P2P needs to be validated for each use case 
individually and not implemented in workarounds with fingers crossed and 
hoped for the best.

Regards,
Christian.

>
> Cheers,
> Jérôme

  parent reply	other threads:[~2017-01-13 13:04 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-21 20:36 Enabling peer to peer device transactions for PCIe devices Deucher, Alexander
2016-11-22 18:11 ` Dan Williams
     [not found]   ` <75a1f44f-c495-7d1e-7e1c-17e89555edba@amd.com>
2016-11-22 20:01     ` Dan Williams
2016-11-22 20:10       ` Daniel Vetter
2016-11-22 20:24         ` Dan Williams
2016-11-22 20:35         ` Serguei Sagalovitch
2016-11-22 21:03           ` Daniel Vetter
2016-11-22 21:21             ` Dan Williams
2016-11-22 22:21               ` Sagalovitch, Serguei
2016-11-23  7:49               ` Daniel Vetter
2016-11-23  8:51                 ` Christian König
2016-11-23 19:27                   ` Serguei Sagalovitch
2016-11-23 17:03                 ` Dave Hansen
2016-11-23 17:13     ` Logan Gunthorpe
2016-11-23 17:27       ` Bart Van Assche
2016-11-23 18:40         ` Dan Williams
2016-11-23 19:12           ` Jason Gunthorpe
2016-11-23 19:24             ` Serguei Sagalovitch
2016-11-23 19:06         ` Serguei Sagalovitch
2016-11-23 19:05       ` Jason Gunthorpe
2016-11-23 19:14         ` Serguei Sagalovitch
2016-11-23 19:32           ` Jason Gunthorpe
     [not found]             ` <c2c88376-5ba7-37d1-4d3e-592383ebb00a@amd.com>
2016-11-23 20:33               ` Jason Gunthorpe
2016-11-23 21:11                 ` Logan Gunthorpe
2016-11-23 21:55                   ` Jason Gunthorpe
2016-11-23 22:42                     ` Dan Williams
2016-11-23 23:25                       ` Jason Gunthorpe
2016-11-24  9:45                         ` Christian König
2016-11-24 16:26                           ` Jason Gunthorpe
2016-11-24 17:00                             ` Serguei Sagalovitch
2016-11-24 17:55                           ` Logan Gunthorpe
2016-11-25 13:06                             ` Christian König
2016-11-25 16:45                               ` Logan Gunthorpe
2016-11-25 17:20                                 ` Serguei Sagalovitch
2016-11-25 20:26                                   ` Felix Kuehling
2016-11-25 20:48                                     ` Serguei Sagalovitch
2016-11-24  0:40                     ` Sagalovitch, Serguei
2016-11-24 16:24                       ` Jason Gunthorpe
2016-11-24  1:25                     ` Logan Gunthorpe
2016-11-24 16:42                       ` Jason Gunthorpe
2016-11-24 18:11                         ` Logan Gunthorpe
2016-11-25  7:58                           ` Christoph Hellwig
2016-11-25 19:41                             ` Jason Gunthorpe
2016-11-25 17:59                           ` Serguei Sagalovitch
2016-11-25 13:22                         ` Christian König
2016-11-25 17:16                           ` Serguei Sagalovitch
2016-11-25 19:34                             ` Jason Gunthorpe
2016-11-25 19:49                               ` Serguei Sagalovitch
2016-11-25 20:19                                 ` Jason Gunthorpe
2016-11-25 23:41                               ` Alex Deucher
2016-11-25 19:32                           ` Jason Gunthorpe
2016-11-25 20:40                             ` Christian König
2016-11-25 20:51                               ` Felix Kuehling
2016-11-25 21:18                               ` Jason Gunthorpe
2016-11-27  8:16                             ` Haggai Eran
2016-11-27 14:02                             ` Haggai Eran
2016-11-27 14:07                               ` Christian König
2016-11-28  5:31                                 ` zhoucm1
2016-11-28 14:48                               ` Serguei Sagalovitch
2016-11-28 18:36                                 ` Haggai Eran
2016-11-28 16:57                               ` Jason Gunthorpe
2016-11-28 18:19                                 ` Haggai Eran
2016-11-28 19:02                                   ` Jason Gunthorpe
2016-11-30 10:45                                     ` Haggai Eran
2016-11-30 16:23                                       ` Jason Gunthorpe
2016-11-30 17:28                                         ` Serguei Sagalovitch
2016-12-04  7:33                                           ` Haggai Eran
2016-11-30 18:01                                         ` Logan Gunthorpe
2016-12-04  7:42                                           ` Haggai Eran
2016-12-04 13:06                                             ` Stephen Bates
2016-12-04 13:23                                             ` Stephen Bates
2016-12-05 17:18                                               ` Jason Gunthorpe
2016-12-05 17:40                                                 ` Dan Williams
2016-12-05 18:02                                                   ` Jason Gunthorpe
2016-12-05 18:08                                                     ` Dan Williams
2016-12-05 18:39                                                       ` Logan Gunthorpe
2016-12-05 18:48                                                         ` Dan Williams
2016-12-05 19:14                                                           ` Jason Gunthorpe
2016-12-05 19:27                                                             ` Logan Gunthorpe
2016-12-05 19:46                                                               ` Jason Gunthorpe
2016-12-05 19:59                                                                 ` Logan Gunthorpe
2016-12-05 20:06                                                                 ` Christoph Hellwig
2016-12-06  8:06                                                           ` Stephen Bates
2016-12-06 16:38                                                             ` Jason Gunthorpe
2016-12-06 16:51                                                               ` Logan Gunthorpe
2016-12-06 17:28                                                                 ` Jason Gunthorpe
2016-12-06 21:47                                                                   ` Logan Gunthorpe
2016-12-06 22:02                                                                     ` Dan Williams
2016-12-06 17:12                                                               ` Christoph Hellwig
2016-12-04  7:53                                         ` Haggai Eran
2016-11-30 17:10                                       ` Deucher, Alexander
2016-11-28 18:20                                 ` Logan Gunthorpe
2016-11-28 19:35                                   ` Serguei Sagalovitch
2016-11-28 21:36                                     ` Logan Gunthorpe
2016-11-28 21:55                                       ` Serguei Sagalovitch
2016-11-28 22:24                                         ` Jason Gunthorpe
2017-01-05 18:39 ` Jerome Glisse
2017-01-05 19:01   ` Jason Gunthorpe
2017-01-05 19:54     ` Jerome Glisse
2017-01-05 20:07       ` Jason Gunthorpe
2017-01-05 20:19         ` Jerome Glisse
2017-01-05 22:42           ` Jason Gunthorpe
2017-01-05 23:23             ` Jerome Glisse
2017-01-06  0:30               ` Jason Gunthorpe
2017-01-06  0:41                 ` Serguei Sagalovitch
2017-01-06  1:58                 ` Jerome Glisse
2017-01-06 16:56                   ` Serguei Sagalovitch
2017-01-06 17:37                     ` Jerome Glisse
2017-01-06 18:26                       ` Jason Gunthorpe
2017-01-06 19:12                         ` Deucher, Alexander
2017-01-06 22:10                         ` Logan Gunthorpe
2017-01-12  4:54                           ` Stephen Bates
2017-01-12 15:11                             ` Jerome Glisse
2017-01-12 17:17                               ` Jason Gunthorpe
2017-01-13 13:04                               ` Christian König [this message]
2017-01-12 22:35                             ` Logan Gunthorpe
2017-01-06 15:08     ` Henrique Almeida
2017-10-20 12:36 ` Ludwig Petrosyan
2017-10-20 15:48   ` Logan Gunthorpe
2017-10-22  6:13     ` Petrosyan, Ludwig
2017-10-22 17:19       ` Logan Gunthorpe
2017-10-23 16:08       ` David Laight
2017-10-23 22:04         ` Logan Gunthorpe
2017-10-24  5:58           ` Petrosyan, Ludwig
2017-10-24 14:58             ` David Laight
2017-10-26 13:28               ` Petrosyan, Ludwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0733efde-1a6e-5237-0868-e9fb31f237c7@amd.com \
    --to=christian.koenig@amd.com \
    --cc=alexander.deucher@amd.com \
    --cc=ben.sander@amd.com \
    --cc=david1.zhou@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=felix.kuehling@amd.com \
    --cc=hch@infradead.org \
    --cc=j.glisse@gmail.com \
    --cc=jglisse@redhat.com \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-nvdimm@ml01.01.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=logang@deltatee.com \
    --cc=paul.blinzer@amd.com \
    --cc=qiang.yu@amd.com \
    --cc=sbates@raithlin.com \
    --cc=serguei.sagalovitch@amd.com \
    --cc=suravee.suthikulpanit@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).