diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-05-10 18:44:06 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-05-13 19:07:00 -0400 |
commit | 773b3f2034fbff98af7770e735347f536cbbb21a (patch) | |
tree | 750f9e8962d3d4f2f9d27ef23d2c4855e8749e16 /drivers/gpu/nvgpu/gk20a | |
parent | 50c6c9cfcd040742f3d242993576c65842006f92 (diff) |
gpu: nvgpu: Do not program max ways evict
Setting max_ways_evict reserves some of L2 for CB. In gk20a CB is in
dedicated RAM, so we don't need to reserve space for it.
The code gets invoked only on gk20a.
Change-Id: Ib8efec8c5e90c135bd0c10bb1eaa3f797ec68698
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: http://git-master/r/1144993
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 7 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/ltc_common.c | 14 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/ltc_gk20a.c | 1 |
4 files changed, 0 insertions, 23 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 2f85bf96..8dfe8eda 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -101,7 +101,6 @@ enum nvgpu_litter_value { | |||
101 | struct gpu_ops { | 101 | struct gpu_ops { |
102 | struct { | 102 | struct { |
103 | int (*determine_L2_size_bytes)(struct gk20a *gk20a); | 103 | int (*determine_L2_size_bytes)(struct gk20a *gk20a); |
104 | void (*set_max_ways_evict_last)(struct gk20a *g, u32 max_ways); | ||
105 | int (*init_comptags)(struct gk20a *g, struct gr_gk20a *gr); | 104 | int (*init_comptags)(struct gk20a *g, struct gr_gk20a *gr); |
106 | int (*cbc_ctrl)(struct gk20a *g, enum gk20a_cbc_op op, | 105 | int (*cbc_ctrl)(struct gk20a *g, enum gk20a_cbc_op op, |
107 | u32 min, u32 max); | 106 | u32 min, u32 max); |
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 4638d597..c98da273 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -1293,7 +1293,6 @@ static int gr_gk20a_ctx_state_floorsweep(struct gk20a *g) | |||
1293 | u32 tpc_offset, gpc_offset; | 1293 | u32 tpc_offset, gpc_offset; |
1294 | u32 sm_id = 0, gpc_id = 0; | 1294 | u32 sm_id = 0, gpc_id = 0; |
1295 | u32 tpc_per_gpc; | 1295 | u32 tpc_per_gpc; |
1296 | u32 max_ways_evict = INVALID_MAX_WAYS; | ||
1297 | u32 gpc_stride = nvgpu_get_litter_value(g, GPU_LIT_GPC_STRIDE); | 1296 | u32 gpc_stride = nvgpu_get_litter_value(g, GPU_LIT_GPC_STRIDE); |
1298 | u32 tpc_in_gpc_stride = nvgpu_get_litter_value(g, GPU_LIT_TPC_IN_GPC_STRIDE); | 1297 | u32 tpc_in_gpc_stride = nvgpu_get_litter_value(g, GPU_LIT_TPC_IN_GPC_STRIDE); |
1299 | 1298 | ||
@@ -1355,12 +1354,6 @@ static int gr_gk20a_ctx_state_floorsweep(struct gk20a *g) | |||
1355 | if (g->ops.gr.setup_alpha_beta_tables) | 1354 | if (g->ops.gr.setup_alpha_beta_tables) |
1356 | g->ops.gr.setup_alpha_beta_tables(g, gr); | 1355 | g->ops.gr.setup_alpha_beta_tables(g, gr); |
1357 | 1356 | ||
1358 | if (gr->num_fbps == 1) | ||
1359 | max_ways_evict = 9; | ||
1360 | |||
1361 | if (max_ways_evict != INVALID_MAX_WAYS) | ||
1362 | g->ops.ltc.set_max_ways_evict_last(g, max_ways_evict); | ||
1363 | |||
1364 | for (gpc_index = 0; | 1357 | for (gpc_index = 0; |
1365 | gpc_index < gr_pd_dist_skip_table__size_1_v() * 4; | 1358 | gpc_index < gr_pd_dist_skip_table__size_1_v() * 4; |
1366 | gpc_index += 4) { | 1359 | gpc_index += 4) { |
diff --git a/drivers/gpu/nvgpu/gk20a/ltc_common.c b/drivers/gpu/nvgpu/gk20a/ltc_common.c index cc0932d9..a4d16b67 100644 --- a/drivers/gpu/nvgpu/gk20a/ltc_common.c +++ b/drivers/gpu/nvgpu/gk20a/ltc_common.c | |||
@@ -25,20 +25,6 @@ | |||
25 | #include "gr_gk20a.h" | 25 | #include "gr_gk20a.h" |
26 | 26 | ||
27 | /* | 27 | /* |
28 | * Set the maximum number of ways that can have the "EVIST_LAST" class. | ||
29 | */ | ||
30 | static void gk20a_ltc_set_max_ways_evict_last(struct gk20a *g, u32 max_ways) | ||
31 | { | ||
32 | u32 mgmt_reg; | ||
33 | |||
34 | mgmt_reg = gk20a_readl(g, ltc_ltcs_ltss_tstg_set_mgmt_r()) & | ||
35 | ~ltc_ltcs_ltss_tstg_set_mgmt_max_ways_evict_last_f(~0); | ||
36 | mgmt_reg |= ltc_ltcs_ltss_tstg_set_mgmt_max_ways_evict_last_f(max_ways); | ||
37 | |||
38 | gk20a_writel(g, ltc_ltcs_ltss_tstg_set_mgmt_r(), mgmt_reg); | ||
39 | } | ||
40 | |||
41 | /* | ||
42 | * Sets the ZBC color for the passed index. | 28 | * Sets the ZBC color for the passed index. |
43 | */ | 29 | */ |
44 | static void gk20a_ltc_set_zbc_color_entry(struct gk20a *g, | 30 | static void gk20a_ltc_set_zbc_color_entry(struct gk20a *g, |
diff --git a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c index 0ce4f91a..a2ecb345 100644 --- a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c | |||
@@ -276,7 +276,6 @@ static int gk20a_determine_L2_size_bytes(struct gk20a *g) | |||
276 | void gk20a_init_ltc(struct gpu_ops *gops) | 276 | void gk20a_init_ltc(struct gpu_ops *gops) |
277 | { | 277 | { |
278 | gops->ltc.determine_L2_size_bytes = gk20a_determine_L2_size_bytes; | 278 | gops->ltc.determine_L2_size_bytes = gk20a_determine_L2_size_bytes; |
279 | gops->ltc.set_max_ways_evict_last = gk20a_ltc_set_max_ways_evict_last; | ||
280 | gops->ltc.init_comptags = gk20a_ltc_init_comptags; | 279 | gops->ltc.init_comptags = gk20a_ltc_init_comptags; |
281 | gops->ltc.cbc_ctrl = gk20a_ltc_cbc_ctrl; | 280 | gops->ltc.cbc_ctrl = gk20a_ltc_cbc_ctrl; |
282 | gops->ltc.set_zbc_color_entry = gk20a_ltc_set_zbc_color_entry; | 281 | gops->ltc.set_zbc_color_entry = gk20a_ltc_set_zbc_color_entry; |