forked from Minki/linux
drm/exynos: use __free_page() to deallocate memory
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. Changelog v3: fix npages type. - npages can have negative value. Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
This commit is contained in:
parent
3c52b8804f
commit
d73c1c995b
@ -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;
|
||||
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user