diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gv100/gr_gv100.c | 19 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 27 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/gr_gv11b.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 4 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c | 4 |
5 files changed, 19 insertions, 36 deletions
diff --git a/drivers/gpu/nvgpu/gv100/gr_gv100.c b/drivers/gpu/nvgpu/gv100/gr_gv100.c index 4b2038ba..8a4b88b4 100644 --- a/drivers/gpu/nvgpu/gv100/gr_gv100.c +++ b/drivers/gpu/nvgpu/gv100/gr_gv100.c | |||
@@ -251,12 +251,19 @@ void gr_gv100_init_sm_id_table(struct gk20a *g) | |||
251 | 251 | ||
252 | for (tpc = 0, sm_id = 0; sm_id < num_sm; tpc++, sm_id += sm_per_tpc) { | 252 | for (tpc = 0, sm_id = 0; sm_id < num_sm; tpc++, sm_id += sm_per_tpc) { |
253 | for (sm = 0; sm < sm_per_tpc; sm++) { | 253 | for (sm = 0; sm < sm_per_tpc; sm++) { |
254 | g->gr.sm_to_cluster[sm_id + sm].gpc_index = | 254 | u32 index = sm_id + sm; |
255 | gpc_table[tpc]; | 255 | |
256 | g->gr.sm_to_cluster[sm_id + sm].tpc_index = | 256 | g->gr.sm_to_cluster[index].gpc_index = gpc_table[tpc]; |
257 | tpc_table[tpc]; | 257 | g->gr.sm_to_cluster[index].tpc_index = tpc_table[tpc]; |
258 | g->gr.sm_to_cluster[sm_id + sm].sm_index = sm; | 258 | g->gr.sm_to_cluster[index].sm_index = sm; |
259 | g->gr.sm_to_cluster[sm_id + sm].global_tpc_index = tpc; | 259 | g->gr.sm_to_cluster[index].global_tpc_index = tpc; |
260 | nvgpu_log_info(g, | ||
261 | "gpc : %d tpc %d sm_index %d global_index: %d", | ||
262 | g->gr.sm_to_cluster[index].gpc_index, | ||
263 | g->gr.sm_to_cluster[index].tpc_index, | ||
264 | g->gr.sm_to_cluster[index].sm_index, | ||
265 | g->gr.sm_to_cluster[index].global_tpc_index); | ||
266 | |||
260 | } | 267 | } |
261 | } | 268 | } |
262 | 269 | ||
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c index 154088d6..fc894908 100644 --- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c | |||
@@ -2125,33 +2125,6 @@ void gr_gv11b_detect_sm_arch(struct gk20a *g) | |||
2125 | gr_gpc0_tpc0_sm_arch_warp_count_v(v); | 2125 | gr_gpc0_tpc0_sm_arch_warp_count_v(v); |
2126 | } | 2126 | } |
2127 | 2127 | ||
2128 | void gr_gv11b_init_sm_id_table(struct gk20a *g) | ||
2129 | { | ||
2130 | u32 gpc, tpc, sm; | ||
2131 | u32 sm_id = 0; | ||
2132 | u32 sm_per_tpc = nvgpu_get_litter_value(g, GPU_LIT_NUM_SM_PER_TPC); | ||
2133 | |||
2134 | /* TODO populate smids based on power efficiency */ | ||
2135 | for (tpc = 0; tpc < g->gr.max_tpc_per_gpc_count; tpc++) { | ||
2136 | for (gpc = 0; gpc < g->gr.gpc_count; gpc++) { | ||
2137 | |||
2138 | if (tpc >= g->gr.gpc_tpc_count[gpc]) | ||
2139 | continue; | ||
2140 | |||
2141 | for (sm = 0; sm < sm_per_tpc; sm++) { | ||
2142 | g->gr.sm_to_cluster[sm_id].tpc_index = tpc; | ||
2143 | g->gr.sm_to_cluster[sm_id].gpc_index = gpc; | ||
2144 | g->gr.sm_to_cluster[sm_id].sm_index = sm_id % 2; | ||
2145 | g->gr.sm_to_cluster[sm_id].global_tpc_index = | ||
2146 | tpc; | ||
2147 | sm_id++; | ||
2148 | } | ||
2149 | } | ||
2150 | } | ||
2151 | g->gr.no_of_sm = sm_id; | ||
2152 | nvgpu_log_info(g, " total number of sm = %d", g->gr.no_of_sm); | ||
2153 | } | ||
2154 | |||
2155 | void gr_gv11b_program_sm_id_numbering(struct gk20a *g, | 2128 | void gr_gv11b_program_sm_id_numbering(struct gk20a *g, |
2156 | u32 gpc, u32 tpc, u32 smid) | 2129 | u32 gpc, u32 tpc, u32 smid) |
2157 | { | 2130 | { |
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.h b/drivers/gpu/nvgpu/gv11b/gr_gv11b.h index ed469abd..e469d142 100644 --- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.h +++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.h | |||
@@ -138,7 +138,6 @@ int gr_gv11b_handle_fecs_error(struct gk20a *g, | |||
138 | int gr_gv11b_setup_rop_mapping(struct gk20a *g, struct gr_gk20a *gr); | 138 | int gr_gv11b_setup_rop_mapping(struct gk20a *g, struct gr_gk20a *gr); |
139 | int gr_gv11b_init_sw_veid_bundle(struct gk20a *g); | 139 | int gr_gv11b_init_sw_veid_bundle(struct gk20a *g); |
140 | void gr_gv11b_detect_sm_arch(struct gk20a *g); | 140 | void gr_gv11b_detect_sm_arch(struct gk20a *g); |
141 | void gr_gv11b_init_sm_id_table(struct gk20a *g); | ||
142 | void gr_gv11b_program_sm_id_numbering(struct gk20a *g, | 141 | void gr_gv11b_program_sm_id_numbering(struct gk20a *g, |
143 | u32 gpc, u32 tpc, u32 smid); | 142 | u32 gpc, u32 tpc, u32 smid); |
144 | int gr_gv11b_load_smid_config(struct gk20a *g); | 143 | int gr_gv11b_load_smid_config(struct gk20a *g); |
diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index 46323cf9..8e4cdab8 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c | |||
@@ -66,6 +66,8 @@ | |||
66 | #include "gp106/pmu_gp106.h" | 66 | #include "gp106/pmu_gp106.h" |
67 | #include "gp106/acr_gp106.h" | 67 | #include "gp106/acr_gp106.h" |
68 | 68 | ||
69 | #include "gv100/gr_gv100.h" | ||
70 | |||
69 | #include "dbg_gpu_gv11b.h" | 71 | #include "dbg_gpu_gv11b.h" |
70 | #include "hal_gv11b.h" | 72 | #include "hal_gv11b.h" |
71 | #include "css_gr_gv11b.h" | 73 | #include "css_gr_gv11b.h" |
@@ -298,7 +300,7 @@ static const struct gpu_ops gv11b_ops = { | |||
298 | .resume_contexts = gr_gk20a_resume_contexts, | 300 | .resume_contexts = gr_gk20a_resume_contexts, |
299 | .get_preemption_mode_flags = gr_gp10b_get_preemption_mode_flags, | 301 | .get_preemption_mode_flags = gr_gp10b_get_preemption_mode_flags, |
300 | .fuse_override = gp10b_gr_fuse_override, | 302 | .fuse_override = gp10b_gr_fuse_override, |
301 | .init_sm_id_table = gr_gv11b_init_sm_id_table, | 303 | .init_sm_id_table = gr_gv100_init_sm_id_table, |
302 | .load_smid_config = gr_gv11b_load_smid_config, | 304 | .load_smid_config = gr_gv11b_load_smid_config, |
303 | .program_sm_id_numbering = gr_gv11b_program_sm_id_numbering, | 305 | .program_sm_id_numbering = gr_gv11b_program_sm_id_numbering, |
304 | .is_ltcs_ltss_addr = gr_gm20b_is_ltcs_ltss_addr, | 306 | .is_ltcs_ltss_addr = gr_gm20b_is_ltcs_ltss_addr, |
diff --git a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c index 2cd8018c..7f6df820 100644 --- a/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c +++ b/drivers/gpu/nvgpu/vgpu/gv11b/vgpu_hal_gv11b.c | |||
@@ -74,6 +74,8 @@ | |||
74 | #include <gv11b/ltc_gv11b.h> | 74 | #include <gv11b/ltc_gv11b.h> |
75 | #include <gv11b/gv11b_gating_reglist.h> | 75 | #include <gv11b/gv11b_gating_reglist.h> |
76 | 76 | ||
77 | #include <gv100/gr_gv100.h> | ||
78 | |||
77 | #include <nvgpu/enabled.h> | 79 | #include <nvgpu/enabled.h> |
78 | 80 | ||
79 | #include "vgpu_gr_gv11b.h" | 81 | #include "vgpu_gr_gv11b.h" |
@@ -180,7 +182,7 @@ static const struct gpu_ops vgpu_gv11b_ops = { | |||
180 | .resume_contexts = vgpu_gr_resume_contexts, | 182 | .resume_contexts = vgpu_gr_resume_contexts, |
181 | .get_preemption_mode_flags = gr_gp10b_get_preemption_mode_flags, | 183 | .get_preemption_mode_flags = gr_gp10b_get_preemption_mode_flags, |
182 | .fuse_override = gp10b_gr_fuse_override, | 184 | .fuse_override = gp10b_gr_fuse_override, |
183 | .init_sm_id_table = gr_gv11b_init_sm_id_table, | 185 | .init_sm_id_table = gr_gv100_init_sm_id_table, |
184 | .load_smid_config = gr_gv11b_load_smid_config, | 186 | .load_smid_config = gr_gv11b_load_smid_config, |
185 | .program_sm_id_numbering = gr_gv11b_program_sm_id_numbering, | 187 | .program_sm_id_numbering = gr_gv11b_program_sm_id_numbering, |
186 | .is_ltcs_ltss_addr = gr_gm20b_is_ltcs_ltss_addr, | 188 | .is_ltcs_ltss_addr = gr_gm20b_is_ltcs_ltss_addr, |