summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/mm/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/common/mm/vm.c')
-rw-r--r--drivers/gpu/nvgpu/common/mm/vm.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/common/mm/vm.c b/drivers/gpu/nvgpu/common/mm/vm.c
index b364f4d6..3cb8ed60 100644
--- a/drivers/gpu/nvgpu/common/mm/vm.c
+++ b/drivers/gpu/nvgpu/common/mm/vm.c
@@ -284,7 +284,7 @@ int __nvgpu_vm_init(struct mm_gk20a *mm,
284 bool userspace_managed, 284 bool userspace_managed,
285 char *name) 285 char *name)
286{ 286{
287 int err; 287 int err = 0;
288 char alloc_name[32]; 288 char alloc_name[32];
289 u64 kernel_vma_flags; 289 u64 kernel_vma_flags;
290 u64 user_vma_start, user_vma_limit; 290 u64 user_vma_start, user_vma_limit;
@@ -476,8 +476,19 @@ int __nvgpu_vm_init(struct mm_gk20a *mm,
476 476
477 vm->mapped_buffers = NULL; 477 vm->mapped_buffers = NULL;
478 478
479 nvgpu_mutex_init(&vm->syncpt_ro_map_lock); 479 err = nvgpu_mutex_init(&vm->syncpt_ro_map_lock);
480 nvgpu_mutex_init(&vm->update_gmmu_lock); 480 if (err != 0) {
481 nvgpu_err(g,
482 "Error in syncpt_ro_map_lock mutex initialization");
483 goto clean_up_allocators;
484 }
485
486 err = nvgpu_mutex_init(&vm->update_gmmu_lock);
487 if (err != 0) {
488 nvgpu_err(g, "Error in update_gmmu_lock mutex initialization");
489 goto clean_up_ro_map_lock;
490 }
491
481 nvgpu_ref_init(&vm->ref); 492 nvgpu_ref_init(&vm->ref);
482 nvgpu_init_list_node(&vm->vm_area_list); 493 nvgpu_init_list_node(&vm->vm_area_list);
483 494
@@ -489,12 +500,16 @@ int __nvgpu_vm_init(struct mm_gk20a *mm,
489 if (vm->va_limit > 4ULL * SZ_1G) { 500 if (vm->va_limit > 4ULL * SZ_1G) {
490 err = nvgpu_init_sema_pool(vm); 501 err = nvgpu_init_sema_pool(vm);
491 if (err) { 502 if (err) {
492 goto clean_up_allocators; 503 goto clean_up_gmmu_lock;
493 } 504 }
494 } 505 }
495 506
496 return 0; 507 return 0;
497 508
509clean_up_gmmu_lock:
510 nvgpu_mutex_destroy(&vm->update_gmmu_lock);
511clean_up_ro_map_lock:
512 nvgpu_mutex_destroy(&vm->syncpt_ro_map_lock);
498clean_up_allocators: 513clean_up_allocators:
499 if (nvgpu_alloc_initialized(&vm->kernel)) { 514 if (nvgpu_alloc_initialized(&vm->kernel)) {
500 nvgpu_alloc_destroy(&vm->kernel); 515 nvgpu_alloc_destroy(&vm->kernel);