diff options
author | Marek Szyprowski <m.szyprowski@samsung.com> | 2012-10-02 03:24:24 -0400 |
---|---|---|
committer | Marek Szyprowski <m.szyprowski@samsung.com> | 2012-10-02 03:24:24 -0400 |
commit | 461b6f0d3d7d4e556035463b531136b034b7433e (patch) | |
tree | c3936799d29ae7ce82baa1e63c64c08aafe5b29b | |
parent | abebfb18ea4fe69e9a04187a77fed4e11d67dba4 (diff) | |
parent | 75c5971614932ca53009cbbdfd6c8f96eab9e46f (diff) |
Merge branch 'next-cleanup' into for-v3.7
-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 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); | ||
362 | error: | ||
363 | mutex_unlock(&cma_mutex); | ||
364 | return NULL; | ||
365 | } | 361 | } |
366 | 362 | ||
367 | /** | 363 | /** |