Thread (56 messages) 56 messages, 9 authors, 2018-01-09

Re: [PATCH 06/12] IB/core: Add optional PCI P2P flag to rdma_rw_ctx_[init|destroy]()

From: Christoph Hellwig <hch@lst.de>
Date: 2018-01-08 18:57:47
Also in: linux-nvme, linux-pci, linux-rdma, lkml, nvdimm

On Mon, Jan 08, 2018 at 11:44:41AM -0700, Logan Gunthorpe wrote:
quoted
Think about what the dma mapping routines do:

  (a) translate from host address to bus addresses

and

  (b) flush caches (in non-coherent architectures)

Both are obviously not needed for P2P transfers, as they never reach
the host.
Isn't pci_p2pdma_map_sg doing (a)? It's just translating from a host 
address to a PCI bus address.
It does, sort of - but in a different way then the normal DMA map
ops.  And only to work around the fact that we need to map our
P2P space into struct pages.  Without that we could just pass the
bus address around, but the Linux stack and VM isn't anywhere near
ready for something that advanced.
quoted
quoted
Very long term the IOMMUs under the ops will need to care about this,
so the wrapper is not an optimal place to put it - but I wouldn't
object if it gets it out of RDMA :)
Unless you have an IOMMU on your PCIe switch and not before/inside
the root complex that is not correct.
Per the ACS discussion, in the future we might want to implement "ACS 
Direct Translated P2P" as Alex described. I expect it would be the IOMMU 
that needs to set that up. So, I think, we also have the dma_map 
implementations also doing something like:

(c) setup/manage any security permissions on mappings
Which P2P may at some point be concerned with.
Maybe once root complexes with iommus actually support P2P.  But until
then we have a lot more more important problems to solve.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help