From f09fa2cf2094ad6b2aff3145aa5e608f7ccf83fb Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Thu, 26 Mar 2015 12:47:57 -0700 Subject: gpu: nvgpu: Use sg_alloc_table_for_pages Use sg_alloc_table_for_pages to create sg_table for buffers allocated with NO_KERNEL_MAPPING. The old code returned always an sg_table with one chunk. sg_alloc_table_for_pages returns an sg_table which describes the actual physical chunks of the buffer. Bug 1605769 Change-Id: I412c0151d830fa0f53dbbb08ba8cc9ebce6699e3 Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/723696 --- drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 0ddd9ecb..e2e5fdd7 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c @@ -1735,12 +1735,12 @@ int gk20a_get_sgtable_from_pages(struct device *d, struct sg_table **sgt, err = -ENOMEM; goto fail; } - err = sg_alloc_table(*sgt, 1, GFP_KERNEL); + err = sg_alloc_table_from_pages(*sgt, pages, + DIV_ROUND_UP(size, 4096), 0, size, GFP_KERNEL); if (err) { dev_err(d, "failed to allocate sg_table\n"); goto fail; } - sg_set_page((*sgt)->sgl, *pages, size, 0); sg_dma_address((*sgt)->sgl) = iova; return 0; -- cgit v1.2.2