gpu: nvgpu: add safety build flag CONFIG_NVGPU_SW_SEMAPHORE

Added the safety build flag CONFIG_NVGPU_SW_SEMAPHORE to compile out
sw semaphore implementation in NVGPU. sw semaphore is only used for
presilicon bringup of GPU and hence is not needed for safety build.

Jira NVGPU-3172

Change-Id: I6a46ef22f1e2059437f710198f4ea49a47656fef
Signed-off-by: Debarshi Dutta <ddutta@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2164216
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com>
Reviewed-by: Sagar Kamble <skamble@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Debarshi Dutta
2019-07-30 15:39:48 +05:30
committed by mobile promotions
parent feb3ba3d59
commit 92d009e796
14 changed files with 50 additions and 25 deletions

View File

@@ -314,6 +314,7 @@ bool nvgpu_big_pages_possible(struct vm_gk20a *vm, u64 base, u64 size)
return true;
}
#ifdef CONFIG_NVGPU_SW_SEMAPHORE
/*
* Initialize a semaphore pool. Just return successfully if we do not need
* semaphores (i.e when sync-pts are active).
@@ -375,6 +376,7 @@ static int nvgpu_init_sema_pool(struct vm_gk20a *vm)
return 0;
}
#endif
/*
* Initialize a preallocated vm
@@ -619,6 +621,7 @@ int nvgpu_vm_do_init(struct mm_gk20a *mm,
nvgpu_ref_init(&vm->ref);
nvgpu_init_list_node(&vm->vm_area_list);
#ifdef CONFIG_NVGPU_SW_SEMAPHORE
/*
* This is only necessary for channel address spaces. The best way to
* distinguish channel address spaces from other address spaces is by
@@ -630,12 +633,15 @@ int nvgpu_vm_do_init(struct mm_gk20a *mm,
goto clean_up_gmmu_lock;
}
}
#endif
return 0;
#ifdef CONFIG_NVGPU_SW_SEMAPHORE
clean_up_gmmu_lock:
nvgpu_mutex_destroy(&vm->update_gmmu_lock);
nvgpu_mutex_destroy(&vm->syncpt_ro_map_lock);
#endif
clean_up_allocators:
if (nvgpu_alloc_initialized(&vm->kernel)) {
nvgpu_alloc_destroy(&vm->kernel);
@@ -732,6 +738,7 @@ static void nvgpu_vm_remove(struct vm_gk20a *vm)
struct gk20a *g = vm->mm->g;
bool done;
#ifdef CONFIG_NVGPU_SW_SEMAPHORE
/*
* Do this outside of the update_gmmu_lock since unmapping the semaphore
* pool involves unmapping a GMMU mapping which means aquiring the
@@ -743,6 +750,7 @@ static void nvgpu_vm_remove(struct vm_gk20a *vm)
nvgpu_semaphore_pool_put(vm->sema_pool);
}
}
#endif
if (nvgpu_mem_is_valid(&g->syncpt_mem) &&
vm->syncpt_ro_map_gpu_va != 0ULL) {