On Mon Oct 28 17:58:36 2024 +0000, Robin Murphy wrote:
> It's no longer practical for the OMAP IOMMU driver to trick
> arm_setup_iommu_dma_ops() into ignoring its presence, so let's use the
> same tactic as other IOMMU API users on 32-bit ARM and explicitly kick
> the arch code's dma_iommu_mapping out of the way to avoid problems.
> 
> Fixes: 4720287c7bf7 ("iommu: Remove struct iommu_ops *iommu from 
> arch_setup_dma_ops()")
> Cc: [email protected]
> Signed-off-by: Robin Murphy <[email protected]>
> Tested-by: Sicelo A. Mhlongo <[email protected]>
> Signed-off-by: Sakari Ailus <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/ti/omap3isp/isp.c | 7 +++++++
 1 file changed, 7 insertions(+)

---

diff --git a/drivers/media/platform/ti/omap3isp/isp.c 
b/drivers/media/platform/ti/omap3isp/isp.c
index 405ca215179d..a7fd808aea1e 100644
--- a/drivers/media/platform/ti/omap3isp/isp.c
+++ b/drivers/media/platform/ti/omap3isp/isp.c
@@ -1961,6 +1961,13 @@ static int isp_attach_iommu(struct isp_device *isp)
        struct dma_iommu_mapping *mapping;
        int ret;
 
+       /* We always want to replace any default mapping from the arch code */
+       mapping = to_dma_iommu_mapping(isp->dev);
+       if (mapping) {
+               arm_iommu_detach_device(isp->dev);
+               arm_iommu_release_mapping(mapping);
+       }
+
        /*
         * Create the ARM mapping, used by the ARM DMA mapping core to allocate
         * VAs. This will allocate a corresponding IOMMU domain.

Reply via email to