From bc1ee5a281f1d572eca90f98938f74e896a931c1 Mon Sep 17 00:00:00 2001 From: Rajesh Devaraj Date: Thu, 22 Nov 2018 14:32:20 +0530 Subject: [PATCH] gpu: nvgpu: gk20a.c unification Renamed gk20a.c to nvgpu_init.c and moved it to be part of common code. JIRA NVGPU-1397 JIRA VQRM-2094 JIRA VQRM-4169 Change-Id: I716542a55f1f7acd82da5bd5e7b22d59e0f5cf23 Signed-off-by: Rajesh Devaraj Reviewed-on: https://git-master.nvidia.com/r/1956049 GVS: Gerrit_Virtual_Submit Reviewed-by: Antony Clince Alex Reviewed-by: Ankur Kishore Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/Makefile | 2 +- drivers/gpu/nvgpu/Makefile.sources | 2 +- .../{os/linux/gk20a.c => common/init/nvgpu_init.c} | 14 +++----------- drivers/gpu/nvgpu/os/linux/module.c | 14 ++++++++++++++ drivers/gpu/nvgpu/os/linux/module.h | 2 +- drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c | 3 +++ 6 files changed, 23 insertions(+), 14 deletions(-) rename drivers/gpu/nvgpu/{os/linux/gk20a.c => common/init/nvgpu_init.c} (97%) diff --git a/drivers/gpu/nvgpu/Makefile b/drivers/gpu/nvgpu/Makefile index ee54f9d4c..1f55bb16c 100644 --- a/drivers/gpu/nvgpu/Makefile +++ b/drivers/gpu/nvgpu/Makefile @@ -79,7 +79,6 @@ nvgpu-y += common/bus/bus_gk20a.o \ # Linux specific parts of nvgpu. nvgpu-y += \ - os/linux/gk20a.o \ os/linux/os_ops.o \ os/linux/os_ops_gm20b.o \ os/linux/os_ops_gp10b.o \ @@ -238,6 +237,7 @@ nvgpu-y += \ common/falcon/falcon_gv100.o \ common/falcon/falcon_tu104.o \ common/init/hal_init.o \ + common/init/nvgpu_init.o \ common/pmu/pmu.o \ common/pmu/pmu_ipc.o \ common/pmu/pmu_fw.o \ diff --git a/drivers/gpu/nvgpu/Makefile.sources b/drivers/gpu/nvgpu/Makefile.sources index 4c97e0839..cf26d8025 100644 --- a/drivers/gpu/nvgpu/Makefile.sources +++ b/drivers/gpu/nvgpu/Makefile.sources @@ -45,7 +45,7 @@ srcs := os/posix/nvgpu.c \ os/posix/lock.c \ os/posix/stubs.c \ os/posix/posix-fault-injection.c \ - os/posix/gk20a.c \ + common/init/nvgpu_init.c \ common/mm/allocators/nvgpu_allocator.c \ common/mm/allocators/bitmap_allocator.c \ common/mm/allocators/buddy_allocator.c \ diff --git a/drivers/gpu/nvgpu/os/linux/gk20a.c b/drivers/gpu/nvgpu/common/init/nvgpu_init.c similarity index 97% rename from drivers/gpu/nvgpu/os/linux/gk20a.c rename to drivers/gpu/nvgpu/common/init/nvgpu_init.c index 39c0ca8ac..0c96f8b7c 100644 --- a/drivers/gpu/nvgpu/os/linux/gk20a.c +++ b/drivers/gpu/nvgpu/common/init/nvgpu_init.c @@ -49,10 +49,10 @@ void __nvgpu_check_gpu_state(struct gk20a *g) { - u32 boot_0 = 0xffffffff; + u32 boot_0 = 0xffffffffU; boot_0 = nvgpu_mc_boot_0(g, NULL, NULL, NULL); - if (boot_0 == 0xffffffff) { + if (boot_0 == 0xffffffffU) { nvgpu_err(g, "GPU has disappeared from bus!!"); nvgpu_err(g, "Rebooting system!!"); nvgpu_kernel_restart(NULL); @@ -77,7 +77,7 @@ static void gk20a_mask_interrupts(struct gk20a *g) int gk20a_prepare_poweroff(struct gk20a *g) { - int ret = 0; + u32 ret = 0; nvgpu_log_fn(g, " "); @@ -471,14 +471,9 @@ int gk20a_wait_for_idle(struct gk20a *g) int gk20a_init_gpu_characteristics(struct gk20a *g) { - __nvgpu_set_enabled(g, NVGPU_SUPPORT_PARTIAL_MAPPINGS, true); __nvgpu_set_enabled(g, NVGPU_SUPPORT_MAP_DIRECT_KIND_CTRL, true); __nvgpu_set_enabled(g, NVGPU_SUPPORT_MAP_BUFFER_BATCH, true); - if (IS_ENABLED(CONFIG_SYNC)) { - __nvgpu_set_enabled(g, NVGPU_SUPPORT_SYNC_FENCE_FDS, true); - } - if ((g->ops.mm.support_sparse != NULL) && g->ops.mm.support_sparse(g)) { __nvgpu_set_enabled(g, NVGPU_SUPPORT_SPARSE_ALLOCS, true); } @@ -504,9 +499,6 @@ int gk20a_init_gpu_characteristics(struct gk20a *g) true); } - __nvgpu_set_enabled(g, NVGPU_SUPPORT_DETERMINISTIC_OPTS, true); - - __nvgpu_set_enabled(g, NVGPU_SUPPORT_USERSPACE_MANAGED_AS, true); __nvgpu_set_enabled(g, NVGPU_SUPPORT_TSG, true); if (g->ops.clk_arb.get_arbiter_clk_domains != NULL && diff --git a/drivers/gpu/nvgpu/os/linux/module.c b/drivers/gpu/nvgpu/os/linux/module.c index 823f92cc6..cf71bdbe6 100644 --- a/drivers/gpu/nvgpu/os/linux/module.c +++ b/drivers/gpu/nvgpu/os/linux/module.c @@ -231,6 +231,17 @@ int nvgpu_finalize_poweron_linux(struct nvgpu_os_linux *l) return 0; } +void gk20a_init_linux_characteristics(struct gk20a *g) +{ + __nvgpu_set_enabled(g, NVGPU_SUPPORT_PARTIAL_MAPPINGS, true); + __nvgpu_set_enabled(g, NVGPU_SUPPORT_DETERMINISTIC_OPTS, true); + __nvgpu_set_enabled(g, NVGPU_SUPPORT_USERSPACE_MANAGED_AS, true); + + if (IS_ENABLED(CONFIG_SYNC)) { + __nvgpu_set_enabled(g, NVGPU_SUPPORT_SYNC_FENCE_FDS, true); + } +} + int gk20a_pm_finalize_poweron(struct device *dev) { struct gk20a *g = get_gk20a(dev); @@ -282,6 +293,9 @@ int gk20a_pm_finalize_poweron(struct device *dev) if (err) goto done; + /* Initialize linux specific flags */ + gk20a_init_linux_characteristics(g); + err = nvgpu_init_os_linux_ops(l); if (err) goto done; diff --git a/drivers/gpu/nvgpu/os/linux/module.h b/drivers/gpu/nvgpu/os/linux/module.h index fa5472ebe..10847a716 100644 --- a/drivers/gpu/nvgpu/os/linux/module.h +++ b/drivers/gpu/nvgpu/os/linux/module.h @@ -33,5 +33,5 @@ void __iomem *nvgpu_devm_ioremap(struct device *dev, resource_size_t offset, resource_size_t size); u64 nvgpu_resource_addr(struct platform_device *dev, int i); extern struct class nvgpu_class; - +void gk20a_init_linux_characteristics(struct gk20a *g); #endif diff --git a/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c b/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c index 3134c7f36..f1b4aa7db 100644 --- a/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c +++ b/drivers/gpu/nvgpu/os/linux/vgpu/vgpu_linux.c @@ -229,6 +229,9 @@ int vgpu_pm_finalize_poweron(struct device *dev) goto done; } + /* Initialize linux specific flags */ + gk20a_init_linux_characteristics(g); + err = nvgpu_finalize_poweron_linux(l); if (err) goto done;