ARM: 8288/1: dma-mapping: don't detach devices without an IOMMU during teardown
authorWill Deacon <will.deacon@arm.com>
Fri, 16 Jan 2015 17:01:43 +0000 (18:01 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 29 Jan 2015 15:22:44 +0000 (15:22 +0000)
When tearing down the DMA ops for a device via of_dma_deconfigure, we
unconditionally detach the device from its IOMMU domain. For devices
that aren't actually behind an IOMMU, this produces a "Not attached"
warning message on the console.

This patch changes the teardown code so that we don't detach from the
IOMMU domain when there isn't an IOMMU dma mapping to start with.

Reported-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/dma-mapping.c

index 7864797609b3849628455782c79949f094f6997e..f142ddd6c40a1c0bc3cddc9f642c7726e0c68bdd 100644 (file)
@@ -2025,6 +2025,9 @@ static void arm_teardown_iommu_dma_ops(struct device *dev)
 {
        struct dma_iommu_mapping *mapping = dev->archdata.mapping;
 
+       if (!mapping)
+               return;
+
        arm_iommu_detach_device(dev);
        arm_iommu_release_mapping(mapping);
 }