Hi,
This series add iommu support to rcar-dmac. It's tested on both lager
and koelsch with CONFIG_IPMMU_VMSA and by enabling the ipmmu_ds node in
r8a779{0,1}.dtsi. I verified operation by interacting with /dev/mmcblk1
which is a device behind the iommu.
Vinod can you clarify on whether or not the way forward for this issue
is to map the phys_addr to dma_addr in the client or as I do here in the
controller? I could not find a clear answer to this in the last
discussion about this in v1 of this series.
* Changes since v1
- Add and use a dma_{map,unmap}_page_attrs to be able to map the page
using attributes DMA_ATTR_NO_KERNEL_MAPPING and
DMA_ATTR_SKIP_CPU_SYNC. Thanks Laurent.
- Drop check if dmac is part of a iommu group or not, let the DMA
mapping api handle it.
- Move slave configuration data around in rcar-dmac to avoid code
duplication.
- Fix build issue reported by 'kbuild test robot' regarding phys_to_page
not availability on some configurations.
- Add DT information for r8a7791.
* Changes since RFC
- Switch to use the dma-mapping api instead of using the iommu_map()
directly. Turns out the dma-mapper is much smarter then me...
- Dropped the patch to expose domain->ops->pgsize_bitmap from within the
iommu api.
- Dropped the patch showing how I tested the RFC.
Niklas Söderlund (5):
dma-mapping: add dma_{map,unmap}_page_attrs
dmaengine: rcar-dmac: group slave configuration
dmaengine: rcar-dmac: add iommu support for slave transfers
ARM: dts: r8a7790: add iommus to dmac0 and dmac1
ARM: dts: r8a7791: add iommus to dmac0 and dmac1
arch/arm/boot/dts/r8a7790.dtsi | 30 +++++++++++
arch/arm/boot/dts/r8a7791.dtsi | 30 +++++++++++
drivers/dma/sh/rcar-dmac.c | 88 ++++++++++++++++++++++++++------
include/asm-generic/dma-mapping-common.h | 20 +++++---
4 files changed, 144 insertions(+), 24 deletions(-)
--
2.7.0