Re: Enabling peer to peer device transactions for PCIe devices

From: Serguei Sagalovitch
Date: Thu Nov 24 2016 - 12:00:38 EST



On 2016-11-24 11:26 AM, Jason Gunthorpe wrote:
On Thu, Nov 24, 2016 at 10:45:18AM +0100, Christian König wrote:
Am 24.11.2016 um 00:25 schrieb Jason Gunthorpe:
There is certainly nothing about the hardware that cares
about ZONE_DEVICE vs System memory.
Well that is clearly not so simple. When your ZONE_DEVICE pages describe a
PCI BAR and another PCI device initiates a DMA to this address the DMA
subsystem must be able to check if the interconnection really works.
I said the hardware doesn't care.. You are right, we still have an
outstanding problem in Linux of how to generically DMA map a P2P
address - which is a different issue from getting the P2P address from
a __user pointer...

Jason
I agreed but the problem is that one issue immediately introduce another one
to solve and so on (if we do not want to cut corners). I would think that
a lot of them interconnected because the way how one problem could be
solved may impact solution for another.

btw: about "DMA map a p2p address": Right now to enable p2p between devices
it is required/recommended to disable iommu support (e.g. intel iommu driver
has special logic for graphics and comment "Reserve all PCI MMIO to avoid
peer-to-peer access").