All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/9] Add support for ARM SMMU architectures 1 and 2
@ 2013-06-10 18:34 ` Will Deacon
  0 siblings, 0 replies; 97+ messages in thread
From: Will Deacon @ 2013-06-10 18:34 UTC (permalink / raw)
  To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA
  Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Will Deacon,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

Hi all,

This patch series adds support for ARM's SMMU architectures 1 and 2 to
Linux. It has been tested with models of MMU-400 (AArch32) and MMU-500
(AArch32 and AArch64) coupled with four PL330s doing memory-to-memory
DMA.

The first six patches are preparatory and fix problems that I
encountered whilst trying to use both the ARM IOMMU API and the PL330
driver. The remaining patches add the device-tree binding, previously
discussed at:

  http://lists.infradead.org/pipermail/linux-arm-kernel/2013-April/160663.html
  http://lists.infradead.org/pipermail/linux-arm-kernel/2013-April/162945.html

as well as the driver implementation and an update to the MAINTAINERS
file.

The driver is written only with single-stage (possibly stage 2), LPAE,
non-secure translation in mind. Nested translation may of course be added
later via KVM, but that will require some changes to the core IOMMU API
in Linux. Both arm and arm64 are supported, as well as chained SMMUs,
although we only install our translation in the SMMU furthest from the
device. We're also currently limited in our IPA size, due to input size
restrictions at stage 2. This can be resolved later by munging about in
the page table allocation code, where we currently re-use parts of the
CPU page table helpers.

Read and write protection is supported as far as the pte formats allow
(i.e. no write-only at stage-1) and memory attributes are either normal,
non-cacheable (default) or normal, cacheable, write-back, write-allocate.
TLB broadcasting is not used for either ASIDs (since we don't support
user tables for DMA in Linux) or VMIDs (which are instead used to tag
address spaces in order to limit the scope of TLB invalidation
operations).

Both 4k and 64k (AArch64 only) pages are supported, with the contiguous
hint bit being used in the pte entries for mappings that allow it.

Support for stream-indexing and non-coherent table walking is provided,
but untested.

All comments welcome,

Will


Will Deacon (9):
  dma: pl330: rip out broken, redundant ID probing
  dma: pl330: use dma_addr_t for describing bus addresses
  ARM: dma-mapping: convert DMA direction into IOMMU protection
    attributes
  ARM: dma-mapping: NULLify dev->archdata.mapping pointer on detach
  arm64: pgtable: use pte_index instead of __pte_index
  arm64: device: add iommu pointer to device archdata
  documentation: iommu: add description of ARM System MMU binding
  iommu: add support for ARM Ltd. System MMU architecture
  MAINTAINERS: add entry for ARM system MMU driver

 .../devicetree/bindings/iommu/arm,smmu.txt         |   70 +
 MAINTAINERS                                        |    6 +
 arch/arm/mm/dma-mapping.c                          |   20 +-
 arch/arm64/include/asm/device.h                    |    3 +
 arch/arm64/include/asm/pgtable.h                   |    4 +-
 drivers/dma/pl330.c                                |   29 +-
 drivers/iommu/Kconfig                              |   13 +
 drivers/iommu/Makefile                             |    1 +
 drivers/iommu/arm-smmu.c                           | 1965 ++++++++++++++++++++
 9 files changed, 2081 insertions(+), 30 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/iommu/arm,smmu.txt
 create mode 100644 drivers/iommu/arm-smmu.c

-- 
1.8.2.2

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

end of thread, other threads:[~2013-06-28 16:03 UTC | newest]

Thread overview: 97+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-10 18:34 [PATCH 0/9] Add support for ARM SMMU architectures 1 and 2 Will Deacon
2013-06-10 18:34 ` Will Deacon
     [not found] ` <1370889285-22799-1-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-10 18:34   ` [PATCH 1/9] dma: pl330: rip out broken, redundant ID probing Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-2-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-11  4:37       ` Jassi Brar
2013-06-11 22:31       ` Grant Likely
2013-06-11 22:31         ` Grant Likely
2013-06-12  5:31       ` Vinod Koul
2013-06-12  5:31         ` Vinod Koul
2013-06-11  4:40     ` Jassi Brar
2013-06-11  4:40       ` Jassi Brar
     [not found]       ` <CAJe_Zhc1UoTC4q4oaW=dzyi_10Q7EoezoT=G8_v+yCmBxV75+A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-11  8:45         ` Will Deacon
2013-06-11  8:45           ` Will Deacon
2013-06-10 18:34   ` [PATCH 2/9] dma: pl330: use dma_addr_t for describing bus addresses Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-3-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-11  4:37       ` Jassi Brar
     [not found]         ` <CAJe_ZheKMVQgq42Vx5N1TXXdgFJ2sp50ixU30A7beXhmSVHnZQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-12  5:31           ` Vinod Koul
2013-06-12  5:31             ` Vinod Koul
2013-06-11 22:32       ` Grant Likely
2013-06-11 22:32         ` Grant Likely
2013-06-11  4:39     ` Jassi Brar
2013-06-11  4:39       ` Jassi Brar
2013-06-10 18:34   ` [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes Will Deacon
2013-06-10 18:34     ` Will Deacon
2013-06-19  8:37     ` Marek Szyprowski
2013-06-19  8:37       ` Marek Szyprowski
     [not found]       ` <51C16DAF.1090205-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2013-06-19  8:52         ` Will Deacon
2013-06-19  8:52           ` Will Deacon
     [not found]           ` <20130619085202.GC20351-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-19  8:57             ` Marek Szyprowski
2013-06-19  8:57               ` Marek Szyprowski
     [not found]     ` <1370889285-22799-4-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-25 10:12       ` Hiroshi Doyu
2013-06-25 10:12         ` Hiroshi Doyu
     [not found]         ` <20130625131215.d3cea2a5668a3d41dbbeb064-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-25 11:37           ` Will Deacon
2013-06-25 11:37             ` Will Deacon
     [not found]             ` <20130625113714.GF31838-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-25 11:52               ` Hiroshi Doyu
2013-06-25 11:52                 ` Hiroshi Doyu
2013-06-25 11:52                 ` Hiroshi Doyu
     [not found]                 ` <20130625.145226.1632119404634300971.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-25 12:34                   ` Will Deacon
2013-06-25 12:34                     ` Will Deacon
2013-06-10 18:34   ` [PATCH 4/9] ARM: dma-mapping: NULLify dev->archdata.mapping pointer on detach Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-5-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-11  5:34       ` Hiroshi Doyu
2013-06-11  5:34         ` Hiroshi Doyu
     [not found]         ` <20130611.083455.1500863288897785600.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-11  8:50           ` Will Deacon
2013-06-11  8:50             ` Will Deacon
     [not found]             ` <20130611085015.GC24729-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-11  9:39               ` Hiroshi Doyu
2013-06-11  9:39                 ` Hiroshi Doyu
     [not found]                 ` <20130611123933.4d278ff4e056f395788ad060-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-19  8:59                   ` Marek Szyprowski
2013-06-19  8:59                     ` Marek Szyprowski
2013-06-10 18:34   ` [PATCH 5/9] arm64: pgtable: use pte_index instead of __pte_index Will Deacon
2013-06-10 18:34     ` Will Deacon
2013-06-10 18:34   ` [PATCH 6/9] arm64: device: add iommu pointer to device archdata Will Deacon
2013-06-10 18:34     ` Will Deacon
2013-06-10 18:34   ` [PATCH 7/9] documentation: iommu: add description of ARM System MMU binding Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-8-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-12  8:44       ` Grant Likely
2013-06-12  8:44         ` Grant Likely
2013-06-20 20:08       ` Joerg Roedel
2013-06-20 20:08         ` Joerg Roedel
     [not found]         ` <20130620200845.GF11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2013-06-21  9:57           ` Will Deacon
2013-06-21  9:57             ` Will Deacon
     [not found]             ` <20130621095729.GA7766-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-21 13:55               ` Joerg Roedel
2013-06-21 13:55                 ` Joerg Roedel
     [not found]                 ` <20130621135507.GI11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2013-06-21 16:41                   ` Will Deacon
2013-06-21 16:41                     ` Will Deacon
2013-06-25 19:18       ` Stuart Yoder
2013-06-25 19:18         ` Stuart Yoder
     [not found]         ` <CALRxmdBxFWoRKv+bUu8VEwNNcAJUej9jM2V8N0rrqrr_Vpe8fQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-26 13:39           ` Will Deacon
2013-06-26 13:39             ` Will Deacon
     [not found]             ` <20130626133941.GD7417-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-26 16:19               ` Stuart Yoder
2013-06-26 16:19                 ` Stuart Yoder
     [not found]                 ` <CALRxmdCycFK2wW=C4aU79mudSaT+2vU8nzXxepdstubg+YSdQg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-26 17:42                   ` Will Deacon
2013-06-26 17:42                     ` Will Deacon
     [not found]                     ` <20130626174231.GH10333-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-27 18:22                       ` Stuart Yoder
2013-06-27 18:22                         ` Stuart Yoder
     [not found]                         ` <CALRxmdD5fyp06xW+z=rWagJc_bcJmpr1H9Zbdf=xbg9cCzvVfw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-06-28  9:06                           ` Will Deacon
2013-06-28  9:06                             ` Will Deacon
     [not found]                             ` <20130628090635.GB29002-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-28 16:03                               ` Stuart Yoder
2013-06-28 16:03                                 ` Stuart Yoder
2013-06-10 18:34   ` [PATCH 8/9] iommu: add support for ARM Ltd. System MMU architecture Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-9-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-20 21:26       ` Joerg Roedel
2013-06-20 21:26         ` Joerg Roedel
     [not found]         ` <20130620212646.GG11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2013-06-21 10:23           ` Will Deacon
2013-06-21 10:23             ` Will Deacon
     [not found]             ` <20130621102318.GB7766-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-21 14:13               ` Joerg Roedel
2013-06-21 14:13                 ` Joerg Roedel
2013-06-21 15:00                 ` Will Deacon
2013-06-21 15:00                   ` Will Deacon
     [not found]                   ` <20130621150006.GG7766-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-21 15:30                     ` Joerg Roedel
2013-06-21 15:30                       ` Joerg Roedel
     [not found]                       ` <20130621153044.GL11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2013-06-21 16:40                         ` Will Deacon
2013-06-21 16:40                           ` Will Deacon
2013-06-10 18:34   ` [PATCH 9/9] MAINTAINERS: add entry for ARM system MMU driver Will Deacon
2013-06-10 18:34     ` Will Deacon
     [not found]     ` <1370889285-22799-10-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-12  8:45       ` Grant Likely
2013-06-12  8:45         ` Grant Likely

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.