From 8789cafcfb0d1e16ad0b2c61b047d275f2d684b4 Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Tue, 21 Aug 2018 10:35:06 -0700 Subject: gpu: nvgpu: Standardize HAS_SYNCPOINTs check Nvgpu uses many ways to check if sync points are enabled. The four ways used to be: platform->has_syncpoints g->has_syncpoints nvgpu_is_enabled(g, NVPGU_HAS_SYNCPOINTS) gk20a_platform_has_syncpoints() This patch standardizes all usage to now be nvgpu_has_syncpoints() which is based on gk20a_platform_has_syncpoints() - just renamed to be general to nvgpu. All usage of the other forms have now been consolidated. However, under the hood nvgpu_has_syncpoints() does check the is_enabled flag. This flag is now set where g->has_syncpoints used to be set based on the platform data. The basic dependency chain is this: nvgpu_has_syncpoints -> NVGPU_HAS_SYNCPOINTS -> platform->has_syncpoints However, note: there are several places where syncpoints can be disabled if some other driver initialization fails (for ex. host1x). Also note that nvgpu_has_syncpoints() also considers a disable variable set by debugfs. Bug 2327574 Change-Id: Ia2375a80f5f2e27285e6175568dd13e6bb25fd33 Signed-off-by: Alex Waterman Reviewed-on: https://git-master.nvidia.com/r/1803975 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/mm/vm.c | 4 ++-- drivers/gpu/nvgpu/common/sync/channel_sync.c | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'drivers/gpu/nvgpu/common') diff --git a/drivers/gpu/nvgpu/common/mm/vm.c b/drivers/gpu/nvgpu/common/mm/vm.c index 1e6c4601..7f0b3d10 100644 --- a/drivers/gpu/nvgpu/common/mm/vm.c +++ b/drivers/gpu/nvgpu/common/mm/vm.c @@ -225,7 +225,7 @@ static int nvgpu_init_sema_pool(struct vm_gk20a *vm) /* * Don't waste the memory on semaphores if we don't need them. */ - if (nvgpu_is_enabled(g, NVGPU_HAS_SYNCPOINTS)) { + if (nvgpu_has_syncpoints(g)) { return 0; } @@ -609,7 +609,7 @@ static void __nvgpu_vm_remove(struct vm_gk20a *vm) * pool involves unmapping a GMMU mapping which means aquiring the * update_gmmu_lock. */ - if (!nvgpu_is_enabled(g, NVGPU_HAS_SYNCPOINTS)) { + if (!nvgpu_has_syncpoints(g)) { if (vm->sema_pool) { nvgpu_semaphore_pool_unmap(vm->sema_pool, vm); nvgpu_semaphore_pool_put(vm->sema_pool); diff --git a/drivers/gpu/nvgpu/common/sync/channel_sync.c b/drivers/gpu/nvgpu/common/sync/channel_sync.c index 116e5701..b40de834 100644 --- a/drivers/gpu/nvgpu/common/sync/channel_sync.c +++ b/drivers/gpu/nvgpu/common/sync/channel_sync.c @@ -658,7 +658,7 @@ struct nvgpu_channel_sync *nvgpu_channel_sync_create(struct channel_gk20a *c, bool user_managed) { #ifdef CONFIG_TEGRA_GK20A_NVHOST - if (gk20a_platform_has_syncpoints(c->g)) + if (nvgpu_has_syncpoints(c->g)) return channel_sync_syncpt_create(c, user_managed); #endif return channel_sync_semaphore_create(c, user_managed); @@ -666,5 +666,15 @@ struct nvgpu_channel_sync *nvgpu_channel_sync_create(struct channel_gk20a *c, bool nvgpu_channel_sync_needs_os_fence_framework(struct gk20a *g) { - return !gk20a_platform_has_syncpoints(g); + return !nvgpu_has_syncpoints(g); +} + +bool nvgpu_has_syncpoints(struct gk20a *g) +{ +#ifdef CONFIG_TEGRA_GK20A_NVHOST + return nvgpu_is_enabled(g, NVGPU_HAS_SYNCPOINTS) && + !g->disable_syncpoints; +#else + return false; +#endif } -- cgit v1.2.2