From: William Davis <wdavis@nvidia.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: "joro@8bytes.org" <joro@8bytes.org>,
"bhelgaas@google.com" <bhelgaas@google.com>,
"iommu@lists.linux-foundation.org"
<iommu@lists.linux-foundation.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
Terence Ripperda <TRipperda@nvidia.com>,
John Hubbard <jhubbard@nvidia.com>,
"jglisse@redhat.com" <jglisse@redhat.com>
Subject: RE: [PATCH v2 4/7] DMA-API: Add dma_(un)map_resource() documentation
Date: Tue, 2 Jun 2015 14:27:05 +0000 [thread overview]
Message-ID: <37dbe5add91042539fd8dffd596d7738@HQMAIL106.nvidia.com> (raw)
In-Reply-To: <20150601212528.GC7354@konrad-lan.dumpdata.com>
> -----Original Message-----
> From: Konrad Rzeszutek Wilk [mailto:konrad.wilk@oracle.com]
> Sent: Monday, June 1, 2015 4:25 PM
> To: William Davis
> Cc: joro@8bytes.org; bhelgaas@google.com; iommu@lists.linux-foundation.org;
> linux-pci@vger.kernel.org; Terence Ripperda; John Hubbard;
> jglisse@redhat.com
> Subject: Re: [PATCH v2 4/7] DMA-API: Add dma_(un)map_resource()
> documentation
>
> On Mon, May 18, 2015 at 01:25:01PM -0500, wdavis@nvidia.com wrote:
> > From: Will Davis <wdavis@nvidia.com>
> >
> > Add references to both the general API documentation as well as the
> HOWTO.
> >
> > Signed-off-by: Will Davis <wdavis@nvidia.com>
> > ---
> > 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?
In v3 of this patch set, I've added a BUG_ON(ops->map_resource == NULL) to
dma_map_resource() instead of possibly returning 0, at Joerg's suggestion.
In that case, a dma_can_map_resource() would do the same check a driver
would before calling dma_map_resource(), e.g., that
ops->map_resource != NULL. It does seem nicer to wrap that in an API call.
Thanks,
Will
--
nvpublic
next prev parent reply other threads:[~2015-06-02 14:27 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-18 18:24 [PATCH v2 0/7] IOMMU/DMA map_resource support for peer-to-peer wdavis
2015-05-18 18:24 ` [PATCH v2 1/7] dma-debug: add checking for map/unmap_resource wdavis
2015-05-18 18:24 ` [PATCH v2 2/7] DMA-API: Introduce dma_(un)map_resource wdavis
2015-05-29 8:16 ` Joerg Roedel
2015-05-18 18:25 ` [PATCH v2 3/7] dma-mapping: pci: add pci_(un)map_resource wdavis
2015-05-18 18:25 ` [PATCH v2 4/7] DMA-API: Add dma_(un)map_resource() documentation wdavis
2015-05-19 23:43 ` Bjorn Helgaas
[not found] ` <20150519234300.GA31666-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2015-05-20 12:11 ` Mark Hounschell
[not found] ` <555C79E5.9040507-n2QNKt385d+sTnJN9+BGXg@public.gmane.org>
2015-05-20 17:30 ` William Davis
2015-05-20 19:15 ` Mark Hounschell
2015-05-20 19:51 ` William Davis
2015-05-20 20:07 ` Mark Hounschell
2015-05-27 18:31 ` William Davis
2015-05-29 8:24 ` joro
2015-07-07 15:15 ` Bjorn Helgaas
2015-07-07 15:41 ` Alex Williamson
2015-07-07 16:16 ` Bjorn Helgaas
[not found] ` <CAErSpo74X7ny_30L2uDWJ==vQJKq3KgFk8CPVsKuJ7=-DwNo3w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-07 16:41 ` Alex Williamson
[not found] ` <20150707151517.GA14215-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2015-07-07 17:14 ` Mark Hounschell
2015-07-07 17:28 ` Alex Williamson
2015-07-07 19:17 ` Mark Hounschell
[not found] ` <559C25B6.5030101-n2QNKt385d+sTnJN9+BGXg@public.gmane.org>
2015-07-07 19:54 ` Alex Williamson
2015-07-08 15:11 ` Bjorn Helgaas
2015-07-08 16:40 ` Mark Hounschell
2015-07-09 0:50 ` Rafael J. Wysocki
[not found] ` <1431973504-5903-5-git-send-email-wdavis-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-06-01 21:25 ` Konrad Rzeszutek Wilk
2015-06-02 14:27 ` William Davis [this message]
2015-05-18 18:25 ` [PATCH v2 5/7] iommu/amd: Implement (un)map_resource wdavis
2015-05-18 18:25 ` [PATCH v2 6/7] iommu/vt-d: implement (un)map_resource wdavis
2015-05-18 18:25 ` [PATCH v2 7/7] x86: add pci-nommu implementation of map_resource wdavis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=37dbe5add91042539fd8dffd596d7738@HQMAIL106.nvidia.com \
--to=wdavis@nvidia.com \
--cc=TRipperda@nvidia.com \
--cc=bhelgaas@google.com \
--cc=iommu@lists.linux-foundation.org \
--cc=jglisse@redhat.com \
--cc=jhubbard@nvidia.com \
--cc=joro@8bytes.org \
--cc=konrad.wilk@oracle.com \
--cc=linux-pci@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox