Hi, This patchset is a continuation of the planned rework of the ARM IOMMU/DMA-mapping code proposed by Robin Murphy in [1]. However, there are drivers (for example S5P-MFC and Exynos4-IS) which depend on the way the old ARM IOMMU/DMA-mapping glue code worked (it used 'first-fit' IOVA allocation algorithm), so before switching ARM to the generic code, such drivers have to be updated. This patchset provides the needed extensions to the generic IOMMU-DMA framework to enable support for the drivers that relied on the old ARM IOMMU/DMA-mapping behavior. This patchset is based on the idea proposed by Robin Murphy in [2] after the discussion of the workaround implemented directly in the mentioned drivers [3]. Here is a git branch with this patchset and [1] patches applied on top of linux next-20200925: https://github.com/mszyprow/linux/tree/v5.9-next-20200925-arm-dma-iommu-low-address Best regards, Marek Szyprowski References: [1] https://lore.kernel.org/lkml/cover.1597931875.git.robin.murphy@xxxxxxx/ [2] https://lore.kernel.org/linux-iommu/bff57cbe-2247-05e1-9059-d9c66d64c407@xxxxxxx/ [3] https://lore.kernel.org/linux-samsung-soc/20200918144833.14618-1-m.szyprowski@xxxxxxxxxxx/T/ Patch summary: Marek Szyprowski (8): dma-mapping: add DMA_ATTR_LOW_ADDRESS attribute iommu: iova: properly handle 0 as a valid IOVA address iommu: iova: add support for 'first-fit' algorithm iommu: dma-iommu: refactor iommu_dma_alloc_iova() iommu: dma-iommu: add support for DMA_ATTR_LOW_ADDRESS media: platform: exynos4-is: remove all references to physicall addresses media: platform: exynos4-is: use DMA_ATTR_LOW_ADDRESS media: platform: s5p-mfc: use DMA_ATTR_LOW_ADDRESS drivers/iommu/dma-iommu.c | 79 ++++++++++++----- drivers/iommu/intel/iommu.c | 12 +-- drivers/iommu/iova.c | 88 ++++++++++++++++++- .../media/platform/exynos4-is/fimc-capture.c | 6 +- drivers/media/platform/exynos4-is/fimc-core.c | 28 +++--- drivers/media/platform/exynos4-is/fimc-core.h | 18 ++-- drivers/media/platform/exynos4-is/fimc-is.c | 23 ++--- drivers/media/platform/exynos4-is/fimc-is.h | 6 +- .../media/platform/exynos4-is/fimc-lite-reg.c | 4 +- drivers/media/platform/exynos4-is/fimc-lite.c | 2 +- drivers/media/platform/exynos4-is/fimc-lite.h | 4 +- drivers/media/platform/exynos4-is/fimc-m2m.c | 8 +- drivers/media/platform/exynos4-is/fimc-reg.c | 18 ++-- drivers/media/platform/exynos4-is/fimc-reg.h | 4 +- drivers/media/platform/s5p-mfc/s5p_mfc.c | 8 +- include/linux/dma-mapping.h | 6 ++ include/linux/iova.h | 4 + 17 files changed, 221 insertions(+), 97 deletions(-) -- 2.17.1