On Mon, May 18, 2015 at 01:25:01PM -0500, wdavis@xxxxxxxxxx wrote: > From: Will Davis <wdavis@xxxxxxxxxx> > > Add references to both the general API documentation as well as the HOWTO. > > Signed-off-by: Will Davis <wdavis@xxxxxxxxxx> > --- > Documentation/DMA-API-HOWTO.txt | 39 +++++++++++++++++++++++++++++++++++++-- > Documentation/DMA-API.txt | 36 +++++++++++++++++++++++++++++++----- > 2 files changed, 68 insertions(+), 7 deletions(-) > > diff --git a/Documentation/DMA-API-HOWTO.txt b/Documentation/DMA-API-HOWTO.txt > index 0f7afb2..89bd730 100644 > --- a/Documentation/DMA-API-HOWTO.txt > +++ b/Documentation/DMA-API-HOWTO.txt > @@ -138,6 +138,10 @@ What about block I/O and networking buffers? The block I/O and > networking subsystems make sure that the buffers they use are valid > for you to DMA from/to. > > +In some systems, it may also be possible to DMA to and/or from a peer > +device's MMIO region, as described by a 'struct resource'. This is > +referred to as a peer-to-peer mapping. > + > DMA addressing limitations > > Does your device have any DMA addressing limitations? For example, is > @@ -648,6 +652,35 @@ Every dma_map_{single,sg}() call should have its dma_unmap_{single,sg}() > counterpart, because the bus address space is a shared resource and > you could render the machine unusable by consuming all bus addresses. > > +Peer-to-peer DMA mappings can be obtained using dma_map_resource() to map > +another device's MMIO region for the given device: > + > + struct resource *peer_mmio_res = &other_dev->resource[0]; > + dma_addr_t dma_handle = dma_map_resource(dev, peer_mmio_res, > + offset, size, direction); > + if (dma_handle == 0 || dma_mapping_error(dev, dma_handle)) Don't check for 0. That can be a valid value. > + { > + /* > + * If dma_handle == 0, dma_map_resource() is not > + * implemented, and peer-to-peer transactions will not > + * work. Perhaps we should just have an dma_can_map_resource function instead to check for this? -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html