devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] Add PCI ATS support to SMMUv3
@ 2017-05-24 18:01 Jean-Philippe Brucker
  2017-05-24 18:01 ` [PATCH 1/7] PCI: Move ATS declarations outside of CONFIG_PCI Jean-Philippe Brucker
                   ` (2 more replies)
  0 siblings, 3 replies; 20+ messages in thread
From: Jean-Philippe Brucker @ 2017-05-24 18:01 UTC (permalink / raw)
  To: linux-pci, devicetree, linux-acpi, linux-arm-kernel, iommu
  Cc: bhelgaas, robh+dt, mark.rutland, lorenzo.pieralisi, hanjun.guo,
	sudeep.holla, rjw, lenb, will.deacon, robin.murphy, joro, okaya,
	sunil.kovvuri, thunder.leizhen, tn

PCIe devices can implement their own TLB, named Address Translation Cache
(ATC). In order to support Address Translation Service (ATS), the
following changes are needed in software:

* Enable ATS on endpoints when the system supports it. Both PCI root
  complex and associated SMMU must implement the ATS protocol.

* When unmapping an IOVA, send an ATC invalidate request to the endpoint
  in addition to the usual SMMU IOTLB invalidations.

I previously sent this as part of a lengthy RFC [1] adding SVM (ATS +
PASID + PRI) support to SMMUv3. The next PASID/PRI version is almost
ready, but isn't likely to get merged because it needs hardware testing,
so I will send it later. PRI depends on ATS, but ATS should be useful on
its own.

Without PASID and PRI, ATS is used for accelerating transactions. Instead
of having all memory accesses go through SMMU translation, the endpoint
can translate IOVA->PA once, store the result in its ATC, then issue
subsequent transactions using the PA, partially bypassing the SMMU. So in
theory it should be faster while keeping the advantages of an IOMMU,
namely scatter-gather and access control.

The ATS patches can now be tested on some hardware, even though the lack
of compatible PCI endpoints makes it difficult to assess what performance
optimizations we need. That's why the ATS implementation is a bit rough at
the moment, and we will work on optimizing things like invalidation ranges
later.

Since the RFC [1]:
* added DT and ACPI patches,
* added invalidate-all on domain detach,
* removed smmu_group again,
* removed invalidation print from the fast path,
* disabled tagged pointers for good,
* some style changes.

These patches are based on Linux v4.12-rc2

[1] https://www.spinics.net/lists/linux-pci/msg58650.html

Jean-Philippe Brucker (7):
  PCI: Move ATS declarations outside of CONFIG_PCI
  dt-bindings: PCI: Describe ATS property for root complex nodes
  iommu/of: Check ATS capability in root complex nodes
  ACPI/IORT: Check ATS capability in root complex nodes
  iommu/arm-smmu-v3: Link domains and devices
  iommu/arm-smmu-v3: Add support for PCI ATS
  iommu/arm-smmu-v3: Disable tagged pointers

 .../devicetree/bindings/pci/pci-iommu.txt          |   8 +
 drivers/acpi/arm64/iort.c                          |  10 +
 drivers/iommu/arm-smmu-v3.c                        | 258 ++++++++++++++++++++-
 drivers/iommu/of_iommu.c                           |   8 +
 include/linux/iommu.h                              |   4 +
 include/linux/pci.h                                |  26 +--
 6 files changed, 293 insertions(+), 21 deletions(-)

-- 
2.12.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2017-06-20 11:38 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-24 18:01 [PATCH 0/7] Add PCI ATS support to SMMUv3 Jean-Philippe Brucker
2017-05-24 18:01 ` [PATCH 1/7] PCI: Move ATS declarations outside of CONFIG_PCI Jean-Philippe Brucker
2017-05-24 18:01 ` [PATCH 3/7] iommu/of: Check ATS capability in root complex nodes Jean-Philippe Brucker
     [not found] ` <20170524180143.19855-1-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2017-05-24 18:01   ` [PATCH 2/7] dt-bindings: PCI: Describe ATS property for " Jean-Philippe Brucker
2017-05-30 10:01     ` Joerg Roedel
2017-05-30 10:58       ` Jean-Philippe Brucker
     [not found]         ` <035be7ba-e850-a5a9-08fa-802a04feb600-5wv7dgnIgG8@public.gmane.org>
2017-05-31 17:17           ` Rob Herring
     [not found]     ` <20170524180143.19855-3-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2017-05-31 17:23       ` Rob Herring
2017-06-01 12:28         ` Jean-Philippe Brucker
2017-06-05 17:20           ` Rob Herring
2017-06-06 11:11             ` Jean-Philippe Brucker
     [not found]               ` <65aea93f-d516-f045-f216-3f56e96bdeb6-5wv7dgnIgG8@public.gmane.org>
2017-06-20 11:38                 ` Jean-Philippe Brucker
2017-05-24 18:01   ` [PATCH 4/7] ACPI/IORT: Check ATS capability in " Jean-Philippe Brucker
2017-05-24 18:01   ` [PATCH 5/7] iommu/arm-smmu-v3: Link domains and devices Jean-Philippe Brucker
2017-05-24 18:01   ` [PATCH 6/7] iommu/arm-smmu-v3: Add support for PCI ATS Jean-Philippe Brucker
     [not found]     ` <20170524180143.19855-7-jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org>
2017-05-30 10:28       ` Joerg Roedel
2017-05-30 10:58         ` Jean-Philippe Brucker
2017-05-24 18:01   ` [PATCH 7/7] iommu/arm-smmu-v3: Disable tagged pointers Jean-Philippe Brucker
2017-05-31 15:27   ` [PATCH 0/7] Add PCI ATS support to SMMUv3 Nate Watterson
2017-06-01 12:23     ` Jean-Philippe Brucker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).