[PATCH v2] drm/exynos: use __free_page() to deallocate memory

2012-07-09 Thread Inki Dae
this patch uses __free_page() to deallocate the pages allocated
by alloc_page() and the pages doesn't need set_parge_dirty()
and mark_page_accessed() because they aren't from page cache so
removes them.

this patch has a pair with previous patch below,
http://www.spinics.net/lists/dri-devel/msg24382.html

Changelog v2:
remove unnecessary arguments.

Signed-off-by: Inki Dae 
Signed-off-by: Kyungmin Park 
---
 drivers/gpu/drm/exynos/exynos_drm_gem.c |   21 ++---
 1 files changed, 6 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c 
b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index dceb69f..e6ca2b3 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -126,23 +126,14 @@ fail:
 }

 static void exynos_gem_put_pages(struct drm_gem_object *obj,
-   struct page **pages,
-   bool dirty, bool accessed)
+   struct page **pages)
 {
-   int i, npages;
+   unsigned int npages;

npages = obj->size >> PAGE_SHIFT;

-   for (i = 0; i < npages; i++) {
-   if (dirty)
-   set_page_dirty(pages[i]);
-
-   if (accessed)
-   mark_page_accessed(pages[i]);
-
-   /* Undo the reference we took when populating the table */
-   page_cache_release(pages[i]);
-   }
+   while (--npages >= 0)
+   __free_page(pages[npages]);

drm_free_large(pages);
 }
@@ -222,7 +213,7 @@ err1:
kfree(buf->sgt);
buf->sgt = NULL;
 err:
-   exynos_gem_put_pages(obj, pages, true, false);
+   exynos_gem_put_pages(obj, pages);
return ret;

 }
@@ -240,7 +231,7 @@ static void exynos_drm_gem_put_pages(struct drm_gem_object 
*obj)
kfree(buf->sgt);
buf->sgt = NULL;

-   exynos_gem_put_pages(obj, buf->pages, true, false);
+   exynos_gem_put_pages(obj, buf->pages);
buf->pages = NULL;

/* add some codes for UNCACHED type here. TODO */
-- 
1.7.4.1



[PATCH v2] drm/exynos: use __free_page() to deallocate memory

2012-07-09 Thread Inki Dae
this patch uses __free_page() to deallocate the pages allocated
by alloc_page() and the pages doesn't need set_parge_dirty()
and mark_page_accessed() because they aren't from page cache so
removes them.

this patch has a pair with previous patch below,
http://www.spinics.net/lists/dri-devel/msg24382.html

Changelog v2:
remove unnecessary arguments.

Signed-off-by: Inki Dae inki@samsung.com
Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com
---
 drivers/gpu/drm/exynos/exynos_drm_gem.c |   21 ++---
 1 files changed, 6 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c 
b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index dceb69f..e6ca2b3 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -126,23 +126,14 @@ fail:
 }
 
 static void exynos_gem_put_pages(struct drm_gem_object *obj,
-   struct page **pages,
-   bool dirty, bool accessed)
+   struct page **pages)
 {
-   int i, npages;
+   unsigned int npages;
 
npages = obj-size  PAGE_SHIFT;
 
-   for (i = 0; i  npages; i++) {
-   if (dirty)
-   set_page_dirty(pages[i]);
-
-   if (accessed)
-   mark_page_accessed(pages[i]);
-
-   /* Undo the reference we took when populating the table */
-   page_cache_release(pages[i]);
-   }
+   while (--npages = 0)
+   __free_page(pages[npages]);
 
drm_free_large(pages);
 }
@@ -222,7 +213,7 @@ err1:
kfree(buf-sgt);
buf-sgt = NULL;
 err:
-   exynos_gem_put_pages(obj, pages, true, false);
+   exynos_gem_put_pages(obj, pages);
return ret;
 
 }
@@ -240,7 +231,7 @@ static void exynos_drm_gem_put_pages(struct drm_gem_object 
*obj)
kfree(buf-sgt);
buf-sgt = NULL;
 
-   exynos_gem_put_pages(obj, buf-pages, true, false);
+   exynos_gem_put_pages(obj, buf-pages);
buf-pages = NULL;
 
/* add some codes for UNCACHED type here. TODO */
-- 
1.7.4.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel