diff options
Diffstat (limited to 'drivers/gpu/ion/ion_system_heap.c')
| -rw-r--r-- | drivers/gpu/ion/ion_system_heap.c | 25 | 
1 files changed, 4 insertions, 21 deletions
| diff --git a/drivers/gpu/ion/ion_system_heap.c b/drivers/gpu/ion/ion_system_heap.c index e101db5da5b..5fe81a76f2f 100644 --- a/drivers/gpu/ion/ion_system_heap.c +++ b/drivers/gpu/ion/ion_system_heap.c @@ -64,7 +64,6 @@ static struct page *alloc_buffer_page(struct ion_system_heap *heap,  				      unsigned long order)  {  	bool cached = ion_buffer_cached(buffer); -	bool split_pages = ion_buffer_fault_user_mappings(buffer);  	struct ion_page_pool *pool = heap->pools[order_to_index(order)];  	struct page *page; @@ -75,7 +74,7 @@ static struct page *alloc_buffer_page(struct ion_system_heap *heap,  		if (order > 4)  			gfp_flags = high_order_gfp_flags; -		page = alloc_pages(gfp_flags, order); +		page = ion_heap_alloc_pages(buffer, gfp_flags, order);  		if (!page)  			return 0;  		arm_dma_ops.sync_single_for_device(NULL, @@ -85,8 +84,6 @@ static struct page *alloc_buffer_page(struct ion_system_heap *heap,  	if (!page)  		return 0; -	if (split_pages) -		split_page(page, order);  	return page;  } @@ -153,7 +150,6 @@ static int ion_system_heap_allocate(struct ion_heap *heap,  	int i = 0;  	long size_remaining = PAGE_ALIGN(size);  	unsigned int max_order = orders[0]; -	bool split_pages = ion_buffer_fault_user_mappings(buffer);  	INIT_LIST_HEAD(&pages);  	while (size_remaining > 0) { @@ -170,28 +166,15 @@ static int ion_system_heap_allocate(struct ion_heap *heap,  	if (!table)  		goto err; -	if (split_pages) -		ret = sg_alloc_table(table, PAGE_ALIGN(size) / PAGE_SIZE, -				     GFP_KERNEL); -	else -		ret = sg_alloc_table(table, i, GFP_KERNEL); - +	ret = sg_alloc_table(table, i, GFP_KERNEL);  	if (ret)  		goto err1;  	sg = table->sgl;  	list_for_each_entry_safe(info, tmp_info, &pages, list) {  		struct page *page = info->page; -		if (split_pages) { -			for (i = 0; i < (1 << info->order); i++) { -				sg_set_page(sg, page + i, PAGE_SIZE, 0); -				sg = sg_next(sg); -			} -		} else { -			sg_set_page(sg, page, (1 << info->order) * PAGE_SIZE, -				    0); -			sg = sg_next(sg); -		} +		sg_set_page(sg, page, (1 << info->order) * PAGE_SIZE, 0); +		sg = sg_next(sg);  		list_del(&info->list);  		kfree(info);  	} |