From: Alex Williamson <alex.williamson@redhat.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: wdavis@nvidia.com, joro@8bytes.org,
iommu@lists.linux-foundation.org, linux-pci@vger.kernel.org,
tripperda@nvidia.com, jhubbard@nvidia.com, jglisse@redhat.com,
Yijing Wang <wangyijing@huawei.com>,
Dave Jiang <dave.jiang@intel.com>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH 0/6] IOMMU/DMA map_resource support for peer-to-peer
Date: Wed, 06 May 2015 16:30:27 -0600 [thread overview]
Message-ID: <1430951427.4472.529.camel@redhat.com> (raw)
In-Reply-To: <20150506221818.GH24643@google.com>
On Wed, 2015-05-06 at 17:18 -0500, Bjorn Helgaas wrote:
> [+cc Yijing, Dave J, Dave M, Alex]
>
> On Fri, May 01, 2015 at 01:32:12PM -0500, wdavis@nvidia.com wrote:
> > From: Will Davis <wdavis@nvidia.com>
> >
> > Hi,
> >
> > This patch series adds DMA APIs to map and unmap a struct resource to and from
> > a PCI device's IOVA domain, and implements the AMD, Intel, and nommu versions
> > of these interfaces.
> >
> > This solves a long-standing problem with the existing DMA-remapping interfaces,
> > which require that a struct page be given for the region to be mapped into a
> > device's IOVA domain. This requirement cannot support peer device BAR ranges,
> > for which no struct pages exist.
> >
> > The underlying implementations of map_page and map_sg convert the struct page
> > into its physical address anyway, so we just need a way to route the physical
> > address of the BAR region to these implementations. The new interfaces do this
> > by taking the struct resource describing a device's BAR region, from which the
> > physical address is derived.
> >
> > The Intel and nommu versions have been verified on a dual Intel Xeon E5405
> > workstation. I'm in the process of obtaining hardware to test the AMD version
> > as well. Please review.
>
> I think we currently assume there's no peer-to-peer traffic.
>
> I don't know whether changing that will break anything, but I'm concerned
> about these:
>
> - PCIe MPS configuration (see pcie_bus_configure_settings()).
>
> - PCIe ACS, e.g., pci_acs_enabled(). My guess is that this one is OK,
> but Alex would know better.
I think it should be OK too. ACS will force the transaction upstream
for IOMMU translation rather than possible allowing redirection lower in
the topology, but that's sort of the price we pay for isolation. The
p2p context entries need to be present in the IOMMU, so without actually
reading the patches, this does seem like something a driver might want
to do via the DMA API. The IOMMU API already allows us to avoid the
struct page issue and create mappings for p2p in the IOMMU.
> - dma_addr_t. Currently dma_addr_t is big enough to hold any address
> returned from the DMA API. That's not necessarily big enough to hold a
> PCI bus address, e.g., a raw BAR value.
>
> > Will Davis (6):
> > dma-debug: add checking for map/unmap_resource
> > DMA-API: Introduce dma_(un)map_resource
> > dma-mapping: pci: add pci_(un)map_resource
> > iommu/amd: Implement (un)map_resource
> > iommu/vt-d: implement (un)map_resource
> > x86: add pci-nommu implementation of map_resource
> >
> > arch/x86/kernel/pci-nommu.c | 17 +++++++
> > drivers/iommu/amd_iommu.c | 76 ++++++++++++++++++++++++++------
> > drivers/iommu/intel-iommu.c | 18 ++++++++
> > include/asm-generic/dma-mapping-broken.h | 9 ++++
> > include/asm-generic/dma-mapping-common.h | 34 ++++++++++++++
> > include/asm-generic/pci-dma-compat.h | 14 ++++++
> > include/linux/dma-debug.h | 20 +++++++++
> > include/linux/dma-mapping.h | 7 +++
> > lib/dma-debug.c | 48 ++++++++++++++++++++
> > 9 files changed, 230 insertions(+), 13 deletions(-)
> >
> > --
> > 2.3.7
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-05-06 22:30 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-01 18:32 [PATCH 0/6] IOMMU/DMA map_resource support for peer-to-peer wdavis-DDmLM1+adcrQT0dZR+AlfA
2015-05-01 18:32 ` [PATCH 1/6] dma-debug: add checking for map/unmap_resource wdavis
2015-05-01 18:32 ` [PATCH 2/6] DMA-API: Introduce dma_(un)map_resource wdavis
2015-05-07 15:09 ` Bjorn Helgaas
2015-05-07 16:10 ` William Davis
2015-05-01 18:32 ` [PATCH 3/6] dma-mapping: pci: add pci_(un)map_resource wdavis
[not found] ` <1430505138-2877-4-git-send-email-wdavis-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-05-07 15:19 ` Bjorn Helgaas
[not found] ` <20150507151905.GL24643-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2015-05-11 14:30 ` Konrad Rzeszutek Wilk
2015-05-11 15:27 ` Bjorn Helgaas
2015-05-01 18:32 ` [PATCH 4/6] iommu/amd: Implement (un)map_resource wdavis
2015-05-01 18:32 ` [PATCH 5/6] iommu/vt-d: implement (un)map_resource wdavis
2015-05-01 18:32 ` [PATCH 6/6] x86: add pci-nommu implementation of map_resource wdavis
2015-05-07 15:08 ` Bjorn Helgaas
2015-05-07 16:07 ` William Davis
2015-05-06 22:18 ` [PATCH 0/6] IOMMU/DMA map_resource support for peer-to-peer Bjorn Helgaas
2015-05-06 22:30 ` Alex Williamson [this message]
2015-05-07 1:48 ` Yijing Wang
2015-05-07 13:13 ` Bjorn Helgaas
2015-05-07 16:23 ` William Davis
2015-05-07 17:16 ` Bjorn Helgaas
2015-05-07 18:11 ` Jerome Glisse
[not found] ` <20150507181110.GB5966-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-05-11 19:21 ` Don Dutile
2015-05-08 20:21 ` Konrad Rzeszutek Wilk
2015-05-08 20:46 ` Mark Hounschell
[not found] ` <554D2099.2030907-n2QNKt385d+sTnJN9+BGXg@public.gmane.org>
2015-05-11 14:32 ` Konrad Rzeszutek Wilk
2015-05-11 20:05 ` William Davis
2015-05-11 19:49 ` William Davis
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=1430951427.4472.529.camel@redhat.com \
--to=alex.williamson@redhat.com \
--cc=bhelgaas@google.com \
--cc=dave.jiang@intel.com \
--cc=davem@davemloft.net \
--cc=iommu@lists.linux-foundation.org \
--cc=jglisse@redhat.com \
--cc=jhubbard@nvidia.com \
--cc=joro@8bytes.org \
--cc=linux-pci@vger.kernel.org \
--cc=tripperda@nvidia.com \
--cc=wangyijing@huawei.com \
--cc=wdavis@nvidia.com \
/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