aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Szyprowski <m.szyprowski@samsung.com>2012-10-02 03:24:24 -0400
committerMarek Szyprowski <m.szyprowski@samsung.com>2012-10-02 03:24:24 -0400
commit461b6f0d3d7d4e556035463b531136b034b7433e (patch)
treec3936799d29ae7ce82baa1e63c64c08aafe5b29b
parentabebfb18ea4fe69e9a04187a77fed4e11d67dba4 (diff)
parent75c5971614932ca53009cbbdfd6c8f96eab9e46f (diff)
Merge branch 'next-cleanup' into for-v3.7
-rw-r--r--arch/arm/mm/dma-mapping.c11
-rw-r--r--drivers/base/dma-contiguous.c18
2 files changed, 13 insertions, 16 deletions
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index de7215c399c1..477a2d23ddf1 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
1059 if (!pages[i]) 1059 if (!pages[i])
1060 goto error; 1060 goto error;
1061 1061
1062 if (order) 1062 if (order) {
1063 split_page(pages[i], order); 1063 split_page(pages[i], order);
1064 j = 1 << order; 1064 j = 1 << order;
1065 while (--j) 1065 while (--j)
1066 pages[i + j] = pages[i] + j; 1066 pages[i + j] = pages[i] + j;
1067 }
1067 1068
1068 __dma_clear_buffer(pages[i], PAGE_SIZE << order); 1069 __dma_clear_buffer(pages[i], PAGE_SIZE << order);
1069 i += 1 << order; 1070 i += 1 << order;
@@ -1814,7 +1815,7 @@ int arm_iommu_attach_device(struct device *dev,
1814 dev->archdata.mapping = mapping; 1815 dev->archdata.mapping = mapping;
1815 set_dma_ops(dev, &iommu_ops); 1816 set_dma_ops(dev, &iommu_ops);
1816 1817
1817 pr_info("Attached IOMMU controller to %s device.\n", dev_name(dev)); 1818 pr_debug("Attached IOMMU controller to %s device.\n", dev_name(dev));
1818 return 0; 1819 return 0;
1819} 1820}
1820 1821
diff --git a/drivers/base/dma-contiguous.c b/drivers/base/dma-contiguous.c
index 34d94c762a1e..9a1469474f55 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,
315{ 315{
316 unsigned long mask, pfn, pageno, start = 0; 316 unsigned long mask, pfn, pageno, start = 0;
317 struct cma *cma = dev_get_cma_area(dev); 317 struct cma *cma = dev_get_cma_area(dev);
318 struct page *page = NULL;
318 int ret; 319 int ret;
319 320
320 if (!cma || !cma->count) 321 if (!cma || !cma->count)
@@ -336,18 +337,17 @@ struct page *dma_alloc_from_contiguous(struct device *dev, int count,
336 for (;;) { 337 for (;;) {
337 pageno = bitmap_find_next_zero_area(cma->bitmap, cma->count, 338 pageno = bitmap_find_next_zero_area(cma->bitmap, cma->count,
338 start, count, mask); 339 start, count, mask);
339 if (pageno >= cma->count) { 340 if (pageno >= cma->count)
340 ret = -ENOMEM; 341 break;
341 goto error;
342 }
343 342
344 pfn = cma->base_pfn + pageno; 343 pfn = cma->base_pfn + pageno;
345 ret = alloc_contig_range(pfn, pfn + count, MIGRATE_CMA); 344 ret = alloc_contig_range(pfn, pfn + count, MIGRATE_CMA);
346 if (ret == 0) { 345 if (ret == 0) {
347 bitmap_set(cma->bitmap, pageno, count); 346 bitmap_set(cma->bitmap, pageno, count);
347 page = pfn_to_page(pfn);
348 break; 348 break;
349 } else if (ret != -EBUSY) { 349 } else if (ret != -EBUSY) {
350 goto error; 350 break;
351 } 351 }
352 pr_debug("%s(): memory range at %p is busy, retrying\n", 352 pr_debug("%s(): memory range at %p is busy, retrying\n",
353 __func__, pfn_to_page(pfn)); 353 __func__, pfn_to_page(pfn));
@@ -356,12 +356,8 @@ struct page *dma_alloc_from_contiguous(struct device *dev, int count,
356 } 356 }
357 357
358 mutex_unlock(&cma_mutex); 358 mutex_unlock(&cma_mutex);
359 359 pr_debug("%s(): returned %p\n", __func__, page);
360 pr_debug("%s(): returned %p\n", __func__, pfn_to_page(pfn)); 360 return page;
361 return pfn_to_page(pfn);
362error:
363 mutex_unlock(&cma_mutex);
364 return NULL;
365} 361}
366 362
367/** 363/**