[PATCH 0/8] IOMMU-DMA - support old allocation algorithm used on ARM

From: Marek Szyprowski
Date: Fri Sep 25 2020 - 10:12:38 EST


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