diff options
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 14 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.h | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/gr_gm20b.c | 9 |
4 files changed, 24 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 5ca07d7f..afe1447e 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -143,6 +143,7 @@ struct gpu_ops { | |||
143 | struct zbc_entry *color_val, u32 index); | 143 | struct zbc_entry *color_val, u32 index); |
144 | int (*add_zbc_depth)(struct gk20a *g, struct gr_gk20a *gr, | 144 | int (*add_zbc_depth)(struct gk20a *g, struct gr_gk20a *gr, |
145 | struct zbc_entry *depth_val, u32 index); | 145 | struct zbc_entry *depth_val, u32 index); |
146 | void (*buffer_size_defaults)(struct gk20a *g); | ||
146 | } gr; | 147 | } gr; |
147 | const char *name; | 148 | const char *name; |
148 | struct { | 149 | struct { |
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 482b3c5f..7cd99a63 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -858,7 +858,7 @@ static int gr_gk20a_commit_global_ctx_buffers(struct gk20a *g, | |||
858 | size = gr->global_ctx_buffer[PAGEPOOL].size / | 858 | size = gr->global_ctx_buffer[PAGEPOOL].size / |
859 | gr_scc_pagepool_total_pages_byte_granularity_v(); | 859 | gr_scc_pagepool_total_pages_byte_granularity_v(); |
860 | 860 | ||
861 | if (size == gr_scc_pagepool_total_pages_hwmax_value_v()) | 861 | if (size == gr->pagepool_default_size) |
862 | size = gr_scc_pagepool_total_pages_hwmax_v(); | 862 | size = gr_scc_pagepool_total_pages_hwmax_v(); |
863 | 863 | ||
864 | gk20a_dbg_info("pagepool buffer addr : 0x%016llx, size : %d", | 864 | gk20a_dbg_info("pagepool buffer addr : 0x%016llx, size : %d", |
@@ -2301,7 +2301,7 @@ static int gr_gk20a_alloc_global_ctx_buffers(struct gk20a *g) | |||
2301 | u32 cb_buffer_size = gr->bundle_cb_default_size * | 2301 | u32 cb_buffer_size = gr->bundle_cb_default_size * |
2302 | gr_scc_bundle_cb_size_div_256b_byte_granularity_v(); | 2302 | gr_scc_bundle_cb_size_div_256b_byte_granularity_v(); |
2303 | 2303 | ||
2304 | u32 pagepool_buffer_size = gr_scc_pagepool_total_pages_hwmax_value_v() * | 2304 | u32 pagepool_buffer_size = gr->pagepool_default_size * |
2305 | gr_scc_pagepool_total_pages_byte_granularity_v(); | 2305 | gr_scc_pagepool_total_pages_byte_granularity_v(); |
2306 | 2306 | ||
2307 | gk20a_dbg_fn(""); | 2307 | gk20a_dbg_fn(""); |
@@ -3187,6 +3187,7 @@ static int gr_gk20a_init_gr_config(struct gk20a *g, struct gr_gk20a *gr) | |||
3187 | g->ops.gr.bundle_cb_defaults(g); | 3187 | g->ops.gr.bundle_cb_defaults(g); |
3188 | g->ops.gr.cb_size_default(g); | 3188 | g->ops.gr.cb_size_default(g); |
3189 | g->ops.gr.calc_global_ctx_buffer_size(g); | 3189 | g->ops.gr.calc_global_ctx_buffer_size(g); |
3190 | g->ops.gr.buffer_size_defaults(g); | ||
3190 | gr->timeslice_mode = gr_gpcs_ppcs_cbm_cfg_timeslice_mode_enable_v(); | 3191 | gr->timeslice_mode = gr_gpcs_ppcs_cbm_cfg_timeslice_mode_enable_v(); |
3191 | 3192 | ||
3192 | gk20a_dbg_info("bundle_cb_default_size: %d", | 3193 | gk20a_dbg_info("bundle_cb_default_size: %d", |
@@ -7317,6 +7318,14 @@ void gk20a_resume_all_sms(struct gk20a *g) | |||
7317 | gr_gpcs_tpcs_sm_dbgr_control0_r(), dbgr_control0); | 7318 | gr_gpcs_tpcs_sm_dbgr_control0_r(), dbgr_control0); |
7318 | } | 7319 | } |
7319 | 7320 | ||
7321 | static void gr_gk20a_buffer_size_defaults(struct gk20a *g) | ||
7322 | { | ||
7323 | g->gr.pagepool_default_size = | ||
7324 | gr_scc_pagepool_total_pages_hwmax_value_v(); | ||
7325 | g->gr.pagepool_max_size = | ||
7326 | gr_scc_pagepool_total_pages_hwmax_value_v(); | ||
7327 | } | ||
7328 | |||
7320 | void gk20a_init_gr_ops(struct gpu_ops *gops) | 7329 | void gk20a_init_gr_ops(struct gpu_ops *gops) |
7321 | { | 7330 | { |
7322 | gops->gr.access_smpc_reg = gr_gk20a_access_smpc_reg; | 7331 | gops->gr.access_smpc_reg = gr_gk20a_access_smpc_reg; |
@@ -7353,5 +7362,6 @@ void gk20a_init_gr_ops(struct gpu_ops *gops) | |||
7353 | gops->gr.detect_sm_arch = gr_gk20a_detect_sm_arch; | 7362 | gops->gr.detect_sm_arch = gr_gk20a_detect_sm_arch; |
7354 | gops->gr.add_zbc_color = gr_gk20a_add_zbc_color; | 7363 | gops->gr.add_zbc_color = gr_gk20a_add_zbc_color; |
7355 | gops->gr.add_zbc_depth = gr_gk20a_add_zbc_depth; | 7364 | gops->gr.add_zbc_depth = gr_gk20a_add_zbc_depth; |
7365 | gops->gr.buffer_size_defaults = gr_gk20a_buffer_size_defaults; | ||
7356 | } | 7366 | } |
7357 | 7367 | ||
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h index e5d315e5..c5dd80ea 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h | |||
@@ -243,6 +243,8 @@ struct gr_gk20a { | |||
243 | u32 alpha_cb_default_size; | 243 | u32 alpha_cb_default_size; |
244 | u32 alpha_cb_size; | 244 | u32 alpha_cb_size; |
245 | u32 timeslice_mode; | 245 | u32 timeslice_mode; |
246 | u32 pagepool_default_size; | ||
247 | u32 pagepool_max_size; | ||
246 | 248 | ||
247 | struct gr_ctx_buffer_desc global_ctx_buffer[NR_GLOBAL_CTX_BUF]; | 249 | struct gr_ctx_buffer_desc global_ctx_buffer[NR_GLOBAL_CTX_BUF]; |
248 | 250 | ||
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c index 67bfb430..44fa6189 100644 --- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c | |||
@@ -770,6 +770,14 @@ static void gr_gm20b_detect_sm_arch(struct gk20a *g) | |||
770 | gr_gpc0_tpc0_sm_arch_warp_count_v(v); | 770 | gr_gpc0_tpc0_sm_arch_warp_count_v(v); |
771 | } | 771 | } |
772 | 772 | ||
773 | static void gr_gm20b_buffer_size_defaults(struct gk20a *g) | ||
774 | { | ||
775 | g->gr.pagepool_default_size = | ||
776 | gr_scc_pagepool_total_pages_hwmax_value_v(); | ||
777 | g->gr.pagepool_max_size = | ||
778 | gr_scc_pagepool_total_pages_hwmax_value_v(); | ||
779 | } | ||
780 | |||
773 | void gm20b_init_gr(struct gpu_ops *gops) | 781 | void gm20b_init_gr(struct gpu_ops *gops) |
774 | { | 782 | { |
775 | gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu; | 783 | gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu; |
@@ -807,4 +815,5 @@ void gm20b_init_gr(struct gpu_ops *gops) | |||
807 | gops->gr.detect_sm_arch = gr_gm20b_detect_sm_arch; | 815 | gops->gr.detect_sm_arch = gr_gm20b_detect_sm_arch; |
808 | gops->gr.add_zbc_color = gr_gk20a_add_zbc_color; | 816 | gops->gr.add_zbc_color = gr_gk20a_add_zbc_color; |
809 | gops->gr.add_zbc_depth = gr_gk20a_add_zbc_depth; | 817 | gops->gr.add_zbc_depth = gr_gk20a_add_zbc_depth; |
818 | gops->gr.buffer_size_defaults = gr_gm20b_buffer_size_defaults; | ||
810 | } | 819 | } |