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.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 60247da8..a5caf048 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -1203,15 +1203,18 @@ static int gr_gk20a_setup_alpha_beta_tables(struct gk20a *g,
1203 u32 reg_offset; 1203 u32 reg_offset;
1204 bool assign_alpha; 1204 bool assign_alpha;
1205 1205
1206 u32 map_alpha[gr_pd_alpha_ratio_table__size_1_v()]; 1206 u32 *map_alpha;
1207 u32 map_beta[gr_pd_alpha_ratio_table__size_1_v()]; 1207 u32 *map_beta;
1208 u32 map_reg_used[gr_pd_alpha_ratio_table__size_1_v()]; 1208 u32 *map_reg_used;
1209 1209
1210 gk20a_dbg_fn(""); 1210 gk20a_dbg_fn("");
1211 1211
1212 memset(map_alpha, 0, gr_pd_alpha_ratio_table__size_1_v() * sizeof(u32)); 1212 map_alpha = kzalloc(3 * gr_pd_alpha_ratio_table__size_1_v() *
1213 memset(map_beta, 0, gr_pd_alpha_ratio_table__size_1_v() * sizeof(u32)); 1213 sizeof(u32), GFP_KERNEL);
1214 memset(map_reg_used, 0, gr_pd_alpha_ratio_table__size_1_v() * sizeof(u32)); 1214 if (!map_alpha)
1215 return -ENOMEM;
1216 map_beta = map_alpha + gr_pd_alpha_ratio_table__size_1_v();
1217 map_reg_used = map_beta + gr_pd_alpha_ratio_table__size_1_v();
1215 1218
1216 for (row = 0; row < rows; ++row) { 1219 for (row = 0; row < rows; ++row) {
1217 alpha_target = max_t(u32, gr->tpc_count * row / rows, 1); 1220 alpha_target = max_t(u32, gr->tpc_count * row / rows, 1);
@@ -1277,6 +1280,7 @@ static int gr_gk20a_setup_alpha_beta_tables(struct gk20a *g,
1277 } 1280 }
1278 } 1281 }
1279 1282
1283 kfree(map_alpha);
1280 return 0; 1284 return 0;
1281} 1285}
1282 1286