Hi Marek,
On Tue, Sep 16, 2014 at 12:54:28PM +0100, Marek Szyprowski wrote:
If device has no max_seg_size set, we assume that there is no limit and force it to DMA_BIT_MASK(32) to always use contiguous mappings in DMA address space.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com
arch/arm/mm/dma-mapping.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index bcd5f836f27e..84705e24571b 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -2050,6 +2050,22 @@ int arm_iommu_attach_device(struct device *dev, { int err;
- /*
* if device has no max_seg_size set, we assume that there is no limit
* and force it to DMA_BIT_MASK(32) to always use contiguous mappings
* in DMA address space
*/
- if (!dev->dma_parms) {
dev->dma_parms = kzalloc(sizeof(*dev->dma_parms), GFP_KERNEL);
if (!dev->dma_parms)
return -ENOMEM;
- }
- if (!dev->dma_parms->max_segment_size) {
err = dma_set_max_seg_size(dev, DMA_BIT_MASK(32));
Would it make more sense to base this default value off the dma_mask? In my IOMMU series, of_dma_configure passes back a size parameter to arch_setup_dma_ops which is calculated from the dma-ranges property or the coherent dma mask if the ranges property is absent, so maybe we should set this there too?
Will