diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 17 |
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)) && |