summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index e06d190e..ceb606e4 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -6353,6 +6353,7 @@ static int gr_gk20a_create_priv_addr_table(struct gk20a *g,
6353{ 6353{
6354 int addr_type; /*enum ctxsw_addr_type */ 6354 int addr_type; /*enum ctxsw_addr_type */
6355 u32 gpc_num, tpc_num, ppc_num, be_num; 6355 u32 gpc_num, tpc_num, ppc_num, be_num;
6356 u32 priv_addr, gpc_addr;
6356 u32 broadcast_flags; 6357 u32 broadcast_flags;
6357 u32 t; 6358 u32 t;
6358 int err; 6359 int err;
@@ -6404,10 +6405,18 @@ static int gr_gk20a_create_priv_addr_table(struct gk20a *g,
6404 priv_addr_table, &t); 6405 priv_addr_table, &t);
6405 if (err) 6406 if (err)
6406 return err; 6407 return err;
6407 } else 6408 } else {
6408 priv_addr_table[t++] = 6409 priv_addr = pri_gpc_addr(g,
6409 pri_gpc_addr(g, pri_gpccs_addr_mask(addr), 6410 pri_gpccs_addr_mask(addr),
6410 gpc_num); 6411 gpc_num);
6412
6413 gpc_addr = pri_gpccs_addr_mask(priv_addr);
6414 tpc_num = g->ops.gr.get_tpc_num(g, gpc_addr);
6415 if (tpc_num >= g->gr.gpc_tpc_count[gpc_num])
6416 continue;
6417
6418 priv_addr_table[t++] = priv_addr;
6419 }
6411 } 6420 }
6412 } else if (((addr_type == CTXSW_ADDR_TYPE_EGPC) || 6421 } else if (((addr_type == CTXSW_ADDR_TYPE_EGPC) ||
6413 (addr_type == CTXSW_ADDR_TYPE_ETPC)) && 6422 (addr_type == CTXSW_ADDR_TYPE_ETPC)) &&