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 | /** |
