limit the device dma_mask to the min of default dma_mask and
mask calculate from the dma-range size.
Cc: Joerg Roedel <redacted>
Cc: Grant Likely <redacted>
Cc: Rob Herring <redacted>
Cc: Bjorn Helgaas <redacted>
Cc: Will Deacon <redacted>
Cc: Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>
Cc: Arnd Bergmann <redacted>
Cc: Suravee Suthikulpanit <redacted>
Signed-off-by: Murali Karicheri <redacted>
---
drivers/of/device.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/of/device.c b/drivers/of/device.c
index 17504f4..bcb8a35 100644
--- a/drivers/of/device.c
+++ b/drivers/of/device.c
@@ -128,6 +128,9 @@ void of_dma_configure(struct device *dev, struct device_node *np)
dev_dbg(dev, "device is%sbehind an iommu\n",
iommu ? " " : " not ");
+ /* limit dma_mask to the lower of the two values */
+ *dev->dma_mask = min((*dev->dma_mask), (dma_addr + size - 1));
+
arch_setup_dma_ops(dev, dma_addr, size, iommu, coherent);
}
EXPORT_SYMBOL_GPL(of_dma_configure);
--
1.7.9.5