Loading drivers/gpu/msm/kgsl_pool.c +16 −6 Original line number Diff line number Diff line Loading @@ -65,19 +65,26 @@ _kgsl_get_pool_from_order(unsigned int order) /* Map the page into kernel and zero it out */ static void _kgsl_pool_zero_page(struct page *p) _kgsl_pool_zero_page(struct page *p, unsigned int pool_order) { void *addr = kmap_atomic(p); int i; for (i = 0; i < (1 << pool_order); i++) { struct page *page = nth_page(p, i); void *addr = kmap_atomic(page); memset(addr, 0, PAGE_SIZE); dmac_flush_range(addr, addr + PAGE_SIZE); kunmap_atomic(addr); } } /* Add a page to specified pool */ static void _kgsl_pool_add_page(struct kgsl_page_pool *pool, struct page *p) { _kgsl_pool_zero_page(p, pool->pool_order); spin_lock(&pool->list_lock); list_add_tail(&p->lru, &pool->page_list); pool->page_count++; Loading Loading @@ -322,6 +329,7 @@ int kgsl_pool_alloc_page(int *page_size, struct page **pages, } else return -ENOMEM; } _kgsl_pool_zero_page(page, order); goto done; } Loading @@ -341,6 +349,7 @@ int kgsl_pool_alloc_page(int *page_size, struct page **pages, page = alloc_pages(gfp_mask, order); if (page == NULL) return -ENOMEM; _kgsl_pool_zero_page(page, order); goto done; } } Loading Loading @@ -370,12 +379,13 @@ int kgsl_pool_alloc_page(int *page_size, struct page **pages, } else return -ENOMEM; } _kgsl_pool_zero_page(page, order); } done: for (j = 0; j < (*page_size >> PAGE_SHIFT); j++) { p = nth_page(page, j); _kgsl_pool_zero_page(p); pages[pcount] = p; pcount++; } Loading Loading
drivers/gpu/msm/kgsl_pool.c +16 −6 Original line number Diff line number Diff line Loading @@ -65,19 +65,26 @@ _kgsl_get_pool_from_order(unsigned int order) /* Map the page into kernel and zero it out */ static void _kgsl_pool_zero_page(struct page *p) _kgsl_pool_zero_page(struct page *p, unsigned int pool_order) { void *addr = kmap_atomic(p); int i; for (i = 0; i < (1 << pool_order); i++) { struct page *page = nth_page(p, i); void *addr = kmap_atomic(page); memset(addr, 0, PAGE_SIZE); dmac_flush_range(addr, addr + PAGE_SIZE); kunmap_atomic(addr); } } /* Add a page to specified pool */ static void _kgsl_pool_add_page(struct kgsl_page_pool *pool, struct page *p) { _kgsl_pool_zero_page(p, pool->pool_order); spin_lock(&pool->list_lock); list_add_tail(&p->lru, &pool->page_list); pool->page_count++; Loading Loading @@ -322,6 +329,7 @@ int kgsl_pool_alloc_page(int *page_size, struct page **pages, } else return -ENOMEM; } _kgsl_pool_zero_page(page, order); goto done; } Loading @@ -341,6 +349,7 @@ int kgsl_pool_alloc_page(int *page_size, struct page **pages, page = alloc_pages(gfp_mask, order); if (page == NULL) return -ENOMEM; _kgsl_pool_zero_page(page, order); goto done; } } Loading Loading @@ -370,12 +379,13 @@ int kgsl_pool_alloc_page(int *page_size, struct page **pages, } else return -ENOMEM; } _kgsl_pool_zero_page(page, order); } done: for (j = 0; j < (*page_size >> PAGE_SHIFT); j++) { p = nth_page(page, j); _kgsl_pool_zero_page(p); pages[pcount] = p; pcount++; } Loading