summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
authorSandarbh Jain <sanjain@nvidia.com>2015-07-01 23:59:41 -0400
committerKen Adams <kadams@nvidia.com>2015-07-17 10:52:19 -0400
commite60b7deec46b805582ab206d4ca3a4d213aad3bb (patch)
tree456204c126e15cb6ff8814c472a8b65d14a53129 /drivers/gpu/nvgpu/gk20a/gr_gk20a.c
parent55c85cfa7bc297b525a3b099d469eee0b71b155a (diff)
gpu: nvgpu: Use correct tpc_per_gpc for GM20b
While evaluating the broadcast register, use the correct max_tpc_per_gpc for gm20b. Bug 200118793 Change-Id: Icdc506c05895e5ecdd424dfa2729d0d53460ff15 Reviewed-on: http://git-master/r/765147 (cherry picked from commit be5add9a2f13f787ea408d2a28b0b82c776227d4) Signed-off-by: Sandarbh Jain <sanjain@nvidia.com> Reviewed-on: http://git-master/r/771254 Reviewed-by: Ken Adams <kadams@nvidia.com> Tested-by: Ken Adams <kadams@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 501a7deb..a9d794c2 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -5891,8 +5891,8 @@ int gr_gk20a_get_ctx_buffer_offsets(struct gk20a *g,
5891 u32 *priv_registers; 5891 u32 *priv_registers;
5892 u32 num_registers = 0; 5892 u32 num_registers = 0;
5893 int err = 0; 5893 int err = 0;
5894 u32 potential_offsets = proj_scal_litter_num_gpcs_v() * 5894 struct gr_gk20a *gr = &g->gr;
5895 proj_scal_litter_num_tpc_per_gpc_v(); 5895 u32 potential_offsets = gr->max_gpc_count * gr->max_tpc_per_gpc_count;
5896 5896
5897 gk20a_dbg(gpu_dbg_fn | gpu_dbg_gpu_dbg, "addr=0x%x", addr); 5897 gk20a_dbg(gpu_dbg_fn | gpu_dbg_gpu_dbg, "addr=0x%x", addr);
5898 5898
@@ -6190,6 +6190,7 @@ static int gr_gk20a_find_priv_offset_in_ext_buffer(struct gk20a *g,
6190 u32 marker_size = 0; 6190 u32 marker_size = 0;
6191 u32 control_register_stride = 0; 6191 u32 control_register_stride = 0;
6192 u32 perf_register_stride = 0; 6192 u32 perf_register_stride = 0;
6193 struct gr_gk20a *gr = &g->gr;
6193 6194
6194 /* Only have TPC registers in extended region, so if not a TPC reg, 6195 /* Only have TPC registers in extended region, so if not a TPC reg,
6195 then return error so caller can look elsewhere. */ 6196 then return error so caller can look elsewhere. */
@@ -6329,7 +6330,7 @@ static int gr_gk20a_find_priv_offset_in_ext_buffer(struct gk20a *g,
6329 * max tpc count for the gpcs,in 256b chunks. 6330 * max tpc count for the gpcs,in 256b chunks.
6330 */ 6331 */
6331 6332
6332 max_tpc_count = proj_scal_litter_num_tpc_per_gpc_v(); 6333 max_tpc_count = gr->max_tpc_per_gpc_count;
6333 6334
6334 num_ext_gpccs_ext_buffer_segments = (u32)((max_tpc_count + 1) / 2); 6335 num_ext_gpccs_ext_buffer_segments = (u32)((max_tpc_count + 1) / 2);
6335 6336
@@ -6731,8 +6732,8 @@ int gr_gk20a_exec_ctx_ops(struct channel_gk20a *ch,
6731 void *ctx_ptr = NULL; 6732 void *ctx_ptr = NULL;
6732 bool ch_is_curr_ctx, restart_gr_ctxsw = false; 6733 bool ch_is_curr_ctx, restart_gr_ctxsw = false;
6733 u32 i, j, offset, v; 6734 u32 i, j, offset, v;
6734 u32 max_offsets = proj_scal_litter_num_gpcs_v() * 6735 struct gr_gk20a *gr = &g->gr;
6735 proj_scal_litter_num_tpc_per_gpc_v(); 6736 u32 max_offsets = gr->max_gpc_count * gr->max_tpc_per_gpc_count;
6736 u32 *offsets = NULL; 6737 u32 *offsets = NULL;
6737 u32 *offset_addrs = NULL; 6738 u32 *offset_addrs = NULL;
6738 u32 ctx_op_nr, num_ctx_ops[2] = {num_ctx_wr_ops, num_ctx_rd_ops}; 6739 u32 ctx_op_nr, num_ctx_ops[2] = {num_ctx_wr_ops, num_ctx_rd_ops};