diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 700dcdf8..1b9ecd86 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -1164,8 +1164,12 @@ int gr_gk20a_init_fs_state(struct gk20a *g) | |||
1164 | 1164 | ||
1165 | gk20a_dbg_fn(""); | 1165 | gk20a_dbg_fn(""); |
1166 | 1166 | ||
1167 | if (g->ops.gr.init_sm_id_table) | 1167 | if (g->ops.gr.init_sm_id_table) { |
1168 | g->ops.gr.init_sm_id_table(g); | 1168 | g->ops.gr.init_sm_id_table(g); |
1169 | /* Is table empty ? */ | ||
1170 | if (g->gr.no_of_sm == 0) | ||
1171 | return -EINVAL; | ||
1172 | } | ||
1169 | 1173 | ||
1170 | for (sm_id = 0; sm_id < g->gr.no_of_sm; sm_id++) { | 1174 | for (sm_id = 0; sm_id < g->gr.no_of_sm; sm_id++) { |
1171 | tpc_index = g->gr.sm_to_cluster[sm_id].tpc_index; | 1175 | tpc_index = g->gr.sm_to_cluster[sm_id].tpc_index; |
@@ -1459,7 +1463,9 @@ static int gr_gk20a_init_golden_ctx_image(struct gk20a *g, | |||
1459 | g->ops.gr.commit_global_timeslice(g, c, false); | 1463 | g->ops.gr.commit_global_timeslice(g, c, false); |
1460 | 1464 | ||
1461 | /* floorsweep anything left */ | 1465 | /* floorsweep anything left */ |
1462 | g->ops.gr.init_fs_state(g); | 1466 | err = g->ops.gr.init_fs_state(g); |
1467 | if (err) | ||
1468 | goto clean_up; | ||
1463 | 1469 | ||
1464 | err = gr_gk20a_wait_idle(g, gk20a_get_gr_idle_timeout(g), | 1470 | err = gr_gk20a_wait_idle(g, gk20a_get_gr_idle_timeout(g), |
1465 | GR_IDLE_CHECK_DEFAULT); | 1471 | GR_IDLE_CHECK_DEFAULT); |