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.
E.g. it can happen that PCI device A exports it's BAR using ZONE_DEVICE.
Not PCI device B (a SATA device) can directly read/write to it because
it is on the same bus segment, but PCI device C (a network card for
example) can't because it is on a different bus segment and the bridge
can't handle P2P transactions.
We need to be able to handle such cases and fall back to bouncing
buffers, but I don't see that in the DMA subsystem right now.