Skip to content

dmaengine: rcar-dmac: add iommu support for slave transfers

Vinod Koul linux-arm-kernel linux-iommu linux-renesas-soc 5 versions – New

Get series with b4
b4 am 20160926164722.GB2467@localhost

Versions newest first · linked by author and title

  1. v9 Latest posting 3/30 of 6 patches 0 repliesNew
  2. v9 posting 2/30 of 6 patches 0 repliesSuperseded
  3. v9 posting 1/30 of 6 patches 0 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v7 posting 2/20 of 6 patches0 repliesSuperseded
v7 posting 1/20 of 6 patches0 repliesSuperseded

Patches in v9 posting 3/3 No applies recorded yet

None of the 6 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v9 yet.

Read the v9 thread

Cover letter [PATCHv9 0/6] dmaengine: rcar-dmac: add iommu support for slave transfers
Quoted 24 lines · Niklas S�derlund

Hi,

This series tries to solve the problem with DMA with device registers (MMIO registers) that are behind an IOMMU for the rcar-dmac driver. A recent patch '9575632 (dmaengine: make slave address physical)' clarifies that DMA slave address provided by clients is the physical address. This puts the task of mapping the DMA slave address from a phys_addr_t to a dma_addr_t on the DMA engine.

Without an IOMMU this is easy since the phys_addr_t and dma_addr_t are the same and no special care is needed. However if you have a IOMMU you need to map the DMA slave phys_addr_t to a dma_addr_t using something like this.

This series is based on top of v4.8-rc1. And I'm hoping to be able to collect a Ack from Russell King on patch 4/6 that adds the ARM specific part and then be able to take the whole series through the dmaengine tree. If this is not the best route I'm more then happy to do it another way.

It's tested on a Koelsch with CONFIG_IPMMU_VMSA and by enabling the ipmmu_ds node in r8a7791.dtsi. I verified operation by interacting with /dev/mmcblk1, i2c and the serial console which are devices behind the iommu.

Quoted 5 lines

Furthermore I have audited to the best of my ability all call paths involved to make sure that the dma_addr_t obtained from dma_map_resource() to is not used in a way where it would be expected for the mapping to be RAM (have a struct page). Many thanks to Christoph Hellwig and Laurent Pinchart for there input in this effort.

Applied, thanks

Signature · 1 line
~Vinod