diff options
| -rw-r--r-- | arch/arm/mm/dma-mapping.c | 11 | ||||
| -rw-r--r-- | drivers/base/dma-contiguous.c | 18 | 
2 files changed, 13 insertions, 16 deletions
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index de7215c399c..477a2d23ddf 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -1059,11 +1059,12 @@ static struct page **__iommu_alloc_buffer(struct device *dev, size_t size, gfp_t  		if (!pages[i])  			goto error; -		if (order) +		if (order) {  			split_page(pages[i], order); -		j = 1 << order; -		while (--j) -			pages[i + j] = pages[i] + j; +			j = 1 << order; +			while (--j) +				pages[i + j] = pages[i] + j; +		}  		__dma_clear_buffer(pages[i], PAGE_SIZE << order);  		i += 1 << order; @@ -1814,7 +1815,7 @@ int arm_iommu_attach_device(struct device *dev,  	dev->archdata.mapping = mapping;  	set_dma_ops(dev, &iommu_ops); -	pr_info("Attached IOMMU controller to %s device.\n", dev_name(dev)); +	pr_debug("Attached IOMMU controller to %s device.\n", dev_name(dev));  	return 0;  } diff --git a/drivers/base/dma-contiguous.c b/drivers/base/dma-contiguous.c index 34d94c762a1..9a1469474f5 100644 --- a/drivers/base/dma-contiguous.c +++ b/drivers/base/dma-contiguous.c @@ -315,6 +315,7 @@ struct page *dma_alloc_from_contiguous(struct device *dev, int count,  {  	unsigned long mask, pfn, pageno, start = 0;  	struct cma *cma = dev_get_cma_area(dev); +	struct page *page = NULL;  	int ret;  	if (!cma || !cma->count) @@ -336,18 +337,17 @@ struct page *dma_alloc_from_contiguous(struct device *dev, int count,  	for (;;) {  		pageno = bitmap_find_next_zero_area(cma->bitmap, cma->count,  						    start, count, mask); -		if (pageno >= cma->count) { -			ret = -ENOMEM; -			goto error; -		} +		if (pageno >= cma->count) +			break;  		pfn = cma->base_pfn + pageno;  		ret = alloc_contig_range(pfn, pfn + count, MIGRATE_CMA);  		if (ret == 0) {  			bitmap_set(cma->bitmap, pageno, count); +			page = pfn_to_page(pfn);  			break;  		} else if (ret != -EBUSY) { -			goto error; +			break;  		}  		pr_debug("%s(): memory range at %p is busy, retrying\n",  			 __func__, pfn_to_page(pfn)); @@ -356,12 +356,8 @@ struct page *dma_alloc_from_contiguous(struct device *dev, int count,  	}  	mutex_unlock(&cma_mutex); - -	pr_debug("%s(): returned %p\n", __func__, pfn_to_page(pfn)); -	return pfn_to_page(pfn); -error: -	mutex_unlock(&cma_mutex); -	return NULL; +	pr_debug("%s(): returned %p\n", __func__, page); +	return page;  }  /**  |