From 8d177e7b744acfbe9740af1082397a0f6baa88ae Mon Sep 17 00:00:00 2001 From: Kerwin Wan Date: Thu, 16 Apr 2015 18:08:49 +0800 Subject: gpu: nvgpu: use vzalloc for mm entries When system is in low memory, kzalloc will fail if kernel requests more than PAGE_SIZE continous memory block. Bug 200096099 Change-Id: I44e217ffa6aa6c453a4d4afba45a8ee3b5756cc1 Signed-off-by: Kerwin Wan Reviewed-on: http://git-master/r/732197 (cherry picked from commit 62861976421415f93e98a0a9f977ac1f66046714) Reviewed-on: http://git-master/r/737057 Reviewed-by: Krishna Reddy Tested-by: Krishna Reddy --- drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 d896d783..5e1505c4 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c @@ -2288,8 +2288,8 @@ static int update_gmmu_level_locked(struct vm_gk20a *vm, (l->hi_bit[pgsz_idx] - l->lo_bit[pgsz_idx] + 1); pte->entries = - kzalloc(sizeof(struct gk20a_mm_entry) * - num_entries, GFP_KERNEL); + vzalloc(sizeof(struct gk20a_mm_entry) * + num_entries); if (!pte->entries) return -ENOMEM; pte->pgsz = pgsz_idx; @@ -2504,7 +2504,7 @@ static void gk20a_vm_free_entries(struct vm_gk20a *vm, if (parent->size) free_gmmu_pages(vm, parent); - kfree(parent->entries); + vfree(parent->entries); parent->entries = NULL; } @@ -2635,8 +2635,8 @@ int gk20a_init_vm(struct mm_gk20a *mm, pde_range_from_vaddr_range(vm, 0, vm->va_limit-1, &pde_lo, &pde_hi); - vm->pdb.entries = kzalloc(sizeof(struct gk20a_mm_entry) * - (pde_hi + 1), GFP_KERNEL); + vm->pdb.entries = vzalloc(sizeof(struct gk20a_mm_entry) * + (pde_hi + 1)); vm->pdb.num_entries = pde_hi + 1; if (!vm->pdb.entries) @@ -2703,7 +2703,7 @@ clean_up_small_allocator: clean_up_ptes: free_gmmu_pages(vm, &vm->pdb); clean_up_pdes: - kfree(vm->pdb.entries); + vfree(vm->pdb.entries); return err; } -- cgit v1.2.2