From 870e76fbc7076a41e711ad9d5569a74373a4697a Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Tue, 7 Nov 2017 10:08:16 -0800 Subject: gpu: nvgpu: Move sm_arch to nvgpu_gpu_params Move sm_arch_* fields to nvgpu_gpu_params to make them available from common code without accessing Linux specific GPU characteristics. JIRA NVGPU-259 Change-Id: Ieffb2ddde81b27af53dfedb9fe3972d20757cc35 Signed-off-by: Terje Bergstrom Reviewed-on: https://git-master.nvidia.com/r/1593686 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c | 4 ++++ drivers/gpu/nvgpu/gk20a/gk20a.h | 5 +++++ drivers/gpu/nvgpu/gm20b/gr_gm20b.c | 8 ++++---- drivers/gpu/nvgpu/vgpu/gr_vgpu.c | 6 +++--- 4 files changed, 16 insertions(+), 7 deletions(-) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c index 0481eacf..cff889fb 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_ctrl.c @@ -226,6 +226,10 @@ gk20a_ctrl_ioctl_gpu_characteristics( g->ops.mm.get_mmu_levels(g, pgpu->big_page_size)[0].lo_bit[0]; pgpu->available_big_page_sizes = nvgpu_mm_get_available_big_page_sizes(g); + pgpu->sm_arch_sm_version = g->params.sm_arch_sm_version; + pgpu->sm_arch_spa_version = g->params.sm_arch_spa_version; + pgpu->sm_arch_warp_count = g->params.sm_arch_warp_count; + if (request->gpu_characteristics_buf_size > 0) { size_t write_size = sizeof(*pgpu); diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index ff83fd18..2dbe8b02 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -1075,6 +1075,11 @@ struct nvgpu_gpu_params { u32 gpu_impl; /* GPU revision ID */ u32 gpu_rev; + /* sm version */ + u32 sm_arch_sm_version; + /* sm instruction set */ + u32 sm_arch_spa_version; + u32 sm_arch_warp_count; }; struct gk20a { diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c index afe60b98..61f608f4 100644 --- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c @@ -841,11 +841,11 @@ void gr_gm20b_detect_sm_arch(struct gk20a *g) { u32 v = gk20a_readl(g, gr_gpc0_tpc0_sm_arch_r()); - g->gpu_characteristics.sm_arch_spa_version = + g->params.sm_arch_spa_version = gr_gpc0_tpc0_sm_arch_spa_version_v(v); - g->gpu_characteristics.sm_arch_sm_version = + g->params.sm_arch_sm_version = gr_gpc0_tpc0_sm_arch_sm_version_v(v); - g->gpu_characteristics.sm_arch_warp_count = + g->params.sm_arch_warp_count = gr_gpc0_tpc0_sm_arch_warp_count_v(v); } @@ -1154,7 +1154,7 @@ void gr_gm20b_bpt_reg_info(struct gk20a *g, struct nvgpu_warpstate *w_state) /* for maxwell & kepler */ u32 numSmPerTpc = 1; - u32 numWarpPerTpc = g->gpu_characteristics.sm_arch_warp_count * numSmPerTpc; + u32 numWarpPerTpc = g->params.sm_arch_warp_count * numSmPerTpc; for (sm_id = 0; sm_id < gr->no_of_sm; sm_id++) { gpc = g->gr.sm_to_cluster[sm_id].gpc_index; diff --git a/drivers/gpu/nvgpu/vgpu/gr_vgpu.c b/drivers/gpu/nvgpu/vgpu/gr_vgpu.c index fca02831..730f4b22 100644 --- a/drivers/gpu/nvgpu/vgpu/gr_vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/gr_vgpu.c @@ -37,11 +37,11 @@ void vgpu_gr_detect_sm_arch(struct gk20a *g) gk20a_dbg_fn(""); - g->gpu_characteristics.sm_arch_sm_version = + g->params.sm_arch_sm_version = priv->constants.sm_arch_sm_version; - g->gpu_characteristics.sm_arch_spa_version = + g->params.sm_arch_spa_version = priv->constants.sm_arch_spa_version; - g->gpu_characteristics.sm_arch_warp_count = + g->params.sm_arch_warp_count = priv->constants.sm_arch_warp_count; } -- cgit v1.2.2