Re: Enabling peer to peer device transactions for PCIe devices
From: Jason Gunthorpe
Date: Thu Jan 05 2017 - 15:08:15 EST
On Thu, Jan 05, 2017 at 02:54:24PM -0500, Jerome Glisse wrote:
> Mellanox and NVidia support peer to peer with what they market a
> GPUDirect. It only works without IOMMU. It is probably not upstream :
>
> https://www.mail-archive.com/linux-rdma@xxxxxxxxxxxxxxx/msg21402.html
>
> I thought it was but it seems it require an out of tree driver to work.
Right, it is out of tree and not under consideration for mainline.
> Wether there is a vma or not isn't important to the issue anyway. If
> you want to enforce VMA rule for RDMA it is an RDMA specific discussion
> in which i don't want to be involve, it is not my turf :)
Always having a VMA changes the discussion - the question is how to
create a VMA that reprensents IO device memory, and how do DMA
consumers extract the correct information from that VMA to pass to the
kernel DMA API so it can setup peer-peer DMA.
> What matter is the back channel API between peer-to-peer device. Like
> the above patchset points out for GPU we need to be able to invalidate
> a mapping at any point in time. Pining is not something we want to
> live with.
We have MMU notifiers to handle this today in RDMA. Async RDMA MR
Invalidate like you see in the above out of tree patches is totally
crazy and shouldn't be in mainline. Use ODP capable RDMA hardware.
Jason