diff options
author | seshendra Gadagottu <sgadagottu@nvidia.com> | 2016-09-26 11:50:23 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-11-03 12:14:56 -0400 |
commit | d37a573c4536c153877b201e7b98f5247a16cfed (patch) | |
tree | dd9571ff6100ead57589e43aa038b7224f04e420 /drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |
parent | 2c59031a195a36bb2986a8fce35ca2f9ce242eff (diff) |
gpu: nvgpu: smid programming
Populate chip specific sm id table.
JIRA GV11B-21
Change-Id: I58869b2c3e55449a7d999ddf73d6eb7b359b2a07
Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: http://git-master/r/1227095
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 84b0ed6e..41ef5424 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -1293,7 +1293,7 @@ static void gr_gk20a_program_active_tpc_counts(struct gk20a *g, u32 gpc_index) | |||
1293 | gr_gpc0_gpm_sd_active_tpcs_num_f(gr->gpc_tpc_count[gpc_index])); | 1293 | gr_gpc0_gpm_sd_active_tpcs_num_f(gr->gpc_tpc_count[gpc_index])); |
1294 | } | 1294 | } |
1295 | 1295 | ||
1296 | static void gr_gk20a_init_sm_id_table(struct gk20a *g) | 1296 | void gr_gk20a_init_sm_id_table(struct gk20a *g) |
1297 | { | 1297 | { |
1298 | u32 gpc, tpc; | 1298 | u32 gpc, tpc; |
1299 | u32 sm_id = 0; | 1299 | u32 sm_id = 0; |
@@ -1304,6 +1304,9 @@ static void gr_gk20a_init_sm_id_table(struct gk20a *g) | |||
1304 | if (tpc < g->gr.gpc_tpc_count[gpc]) { | 1304 | if (tpc < g->gr.gpc_tpc_count[gpc]) { |
1305 | g->gr.sm_to_cluster[sm_id].tpc_index = tpc; | 1305 | g->gr.sm_to_cluster[sm_id].tpc_index = tpc; |
1306 | g->gr.sm_to_cluster[sm_id].gpc_index = gpc; | 1306 | g->gr.sm_to_cluster[sm_id].gpc_index = gpc; |
1307 | g->gr.sm_to_cluster[sm_id].sm_index = 0; | ||
1308 | g->gr.sm_to_cluster[sm_id].global_tpc_index = | ||
1309 | sm_id; | ||
1307 | sm_id++; | 1310 | sm_id++; |
1308 | } | 1311 | } |
1309 | } | 1312 | } |
@@ -1339,9 +1342,10 @@ int gr_gk20a_init_fs_state(struct gk20a *g) | |||
1339 | 1342 | ||
1340 | gk20a_dbg_fn(""); | 1343 | gk20a_dbg_fn(""); |
1341 | 1344 | ||
1342 | gr_gk20a_init_sm_id_table(g); | 1345 | if (g->ops.gr.init_sm_id_table) |
1346 | g->ops.gr.init_sm_id_table(g); | ||
1343 | 1347 | ||
1344 | for (sm_id = 0; sm_id < gr->tpc_count; sm_id++) { | 1348 | for (sm_id = 0; sm_id < g->gr.no_of_sm; sm_id++) { |
1345 | tpc_index = g->gr.sm_to_cluster[sm_id].tpc_index; | 1349 | tpc_index = g->gr.sm_to_cluster[sm_id].tpc_index; |
1346 | gpc_index = g->gr.sm_to_cluster[sm_id].gpc_index; | 1350 | gpc_index = g->gr.sm_to_cluster[sm_id].gpc_index; |
1347 | 1351 | ||
@@ -9112,6 +9116,7 @@ void gk20a_init_gr_ops(struct gpu_ops *gops) | |||
9112 | gops->gr.get_preemption_mode_flags = gr_gk20a_get_preemption_mode_flags; | 9116 | gops->gr.get_preemption_mode_flags = gr_gk20a_get_preemption_mode_flags; |
9113 | gops->gr.program_active_tpc_counts = gr_gk20a_program_active_tpc_counts; | 9117 | gops->gr.program_active_tpc_counts = gr_gk20a_program_active_tpc_counts; |
9114 | gops->gr.program_sm_id_numbering = gr_gk20a_program_sm_id_numbering; | 9118 | gops->gr.program_sm_id_numbering = gr_gk20a_program_sm_id_numbering; |
9119 | gops->gr.init_sm_id_table = gr_gk20a_init_sm_id_table; | ||
9115 | gops->gr.is_ltcs_ltss_addr = gr_gk20a_is_ltcs_ltss_addr_stub; | 9120 | gops->gr.is_ltcs_ltss_addr = gr_gk20a_is_ltcs_ltss_addr_stub; |
9116 | gops->gr.is_ltcn_ltss_addr = gr_gk20a_is_ltcn_ltss_addr_stub; | 9121 | gops->gr.is_ltcn_ltss_addr = gr_gk20a_is_ltcn_ltss_addr_stub; |
9117 | gops->gr.split_lts_broadcast_addr = | 9122 | gops->gr.split_lts_broadcast_addr = |