summaryrefslogtreecommitdiff
path: root/patches.tizen/0555-drm-exynos-use-drm_calloc_large-when-allocates-point.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches.tizen/0555-drm-exynos-use-drm_calloc_large-when-allocates-point.patch')
-rw-r--r--patches.tizen/0555-drm-exynos-use-drm_calloc_large-when-allocates-point.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/patches.tizen/0555-drm-exynos-use-drm_calloc_large-when-allocates-point.patch b/patches.tizen/0555-drm-exynos-use-drm_calloc_large-when-allocates-point.patch
new file mode 100644
index 00000000000..54eb2216ef2
--- /dev/null
+++ b/patches.tizen/0555-drm-exynos-use-drm_calloc_large-when-allocates-point.patch
@@ -0,0 +1,95 @@
+From 9a067752114cfd0886bada6a48f48d852f9c3979 Mon Sep 17 00:00:00 2001
+From: YoungJun Cho <yj44.cho@samsung.com>
+Date: Wed, 3 Jul 2013 17:09:19 +0900
+Subject: [PATCH 0555/1302] drm/exynos: use drm_calloc_large when allocates
+ pointer array
+
+If the type of object is pointer array, the drm_calloc_large() is
+more suitable than kzalloc() for its allocation function. And uses
+drm_free_large() instead of kfree() also.
+
+Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
+Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
+Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
+Signed-off-by: Inki Dae <inki.dae@samsung.com>
+Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
+---
+ drivers/gpu/drm/exynos/exynos_drm_buf.c | 9 ++++-----
+ drivers/gpu/drm/exynos/exynos_drm_g2d.c | 6 +++---
+ 2 files changed, 7 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/gpu/drm/exynos/exynos_drm_buf.c b/drivers/gpu/drm/exynos/exynos_drm_buf.c
+index ed5c694..01c8e33 100644
+--- a/drivers/gpu/drm/exynos/exynos_drm_buf.c
++++ b/drivers/gpu/drm/exynos/exynos_drm_buf.c
+@@ -57,8 +57,7 @@ static int lowlevel_buffer_allocate(struct drm_device *dev,
+ dma_addr_t start_addr;
+ unsigned int i = 0;
+
+- buf->pages = kzalloc(sizeof(struct page) * nr_pages,
+- GFP_KERNEL);
++ buf->pages = drm_calloc_large(nr_pages, sizeof(struct page));
+ if (!buf->pages) {
+ DRM_ERROR("failed to allocate pages.\n");
+ return -ENOMEM;
+@@ -69,7 +68,7 @@ static int lowlevel_buffer_allocate(struct drm_device *dev,
+ &buf->dma_attrs);
+ if (!buf->kvaddr) {
+ DRM_ERROR("failed to allocate buffer.\n");
+- kfree(buf->pages);
++ drm_free_large(buf->pages);
+ return -ENOMEM;
+ }
+
+@@ -109,7 +108,7 @@ err_free_attrs:
+ buf->dma_addr = (dma_addr_t)NULL;
+
+ if (!is_drm_iommu_supported(dev))
+- kfree(buf->pages);
++ drm_free_large(buf->pages);
+
+ return ret;
+ }
+@@ -134,7 +133,7 @@ static void lowlevel_buffer_deallocate(struct drm_device *dev,
+ if (!is_drm_iommu_supported(dev)) {
+ dma_free_attrs(dev->dev, buf->size, buf->kvaddr,
+ (dma_addr_t)buf->dma_addr, &buf->dma_attrs);
+- kfree(buf->pages);
++ drm_free_large(buf->pages);
+ } else
+ dma_free_attrs(dev->dev, buf->size, buf->pages,
+ (dma_addr_t)buf->dma_addr, &buf->dma_attrs);
+diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c b/drivers/gpu/drm/exynos/exynos_drm_g2d.c
+index 1eb2a2a..8e8678d 100644
+--- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c
++++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c
+@@ -390,7 +390,7 @@ out:
+ kfree(g2d_userptr->sgt);
+ g2d_userptr->sgt = NULL;
+
+- kfree(g2d_userptr->pages);
++ drm_free_large(g2d_userptr->pages);
+ g2d_userptr->pages = NULL;
+ kfree(g2d_userptr);
+ g2d_userptr = NULL;
+@@ -461,7 +461,7 @@ static dma_addr_t *g2d_userptr_get_dma_addr(struct drm_device *drm_dev,
+ npages = (end - start) >> PAGE_SHIFT;
+ g2d_userptr->npages = npages;
+
+- pages = kzalloc(npages * sizeof(struct page *), GFP_KERNEL);
++ pages = drm_calloc_large(npages, sizeof(struct page *));
+ if (!pages) {
+ DRM_ERROR("failed to allocate pages.\n");
+ kfree(g2d_userptr);
+@@ -551,7 +551,7 @@ err_put_vma:
+ exynos_gem_put_vma(g2d_userptr->vma);
+
+ err_free_pages:
+- kfree(pages);
++ drm_free_large(pages);
+ kfree(g2d_userptr);
+ pages = NULL;
+ g2d_userptr = NULL;
+--
+1.8.3.2
+