From 69bb5e156944d5df715d6bb388fd1c97fe458f18 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Mon, 8 Dec 2014 14:06:04 +0200 Subject: gpu: nvgpu: Simplify pagepool size query Make pagepool size query into a function instead of storing the value during boot time in a structure. This simplifies the structure and users of pagepool size do not need to worry about whether it has already been set. Change-Id: Iba16e840cdf9b6c39449730237aa7d8fdff47848 Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/660907 --- drivers/gpu/nvgpu/gk20a/gk20a.h | 2 +- drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 14 +++++--------- drivers/gpu/nvgpu/gk20a/gr_gk20a.h | 2 -- drivers/gpu/nvgpu/gm20b/gr_gm20b.c | 9 +++------ 4 files changed, 9 insertions(+), 18 deletions(-) (limited to 'drivers/gpu') diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index ca6a8ae0..ef43d29a 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h @@ -143,7 +143,7 @@ struct gpu_ops { struct zbc_entry *color_val, u32 index); int (*add_zbc_depth)(struct gk20a *g, struct gr_gk20a *gr, struct zbc_entry *depth_val, u32 index); - void (*buffer_size_defaults)(struct gk20a *g); + u32 (*pagepool_default_size)(struct gk20a *g); } gr; const char *name; struct { diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 7cd99a63..f2b0c83c 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, size = gr->global_ctx_buffer[PAGEPOOL].size / gr_scc_pagepool_total_pages_byte_granularity_v(); - if (size == gr->pagepool_default_size) + if (size == g->ops.gr.pagepool_default_size(g)) size = gr_scc_pagepool_total_pages_hwmax_v(); 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) u32 cb_buffer_size = gr->bundle_cb_default_size * gr_scc_bundle_cb_size_div_256b_byte_granularity_v(); - u32 pagepool_buffer_size = gr->pagepool_default_size * + u32 pagepool_buffer_size = g->ops.gr.pagepool_default_size(g) * gr_scc_pagepool_total_pages_byte_granularity_v(); gk20a_dbg_fn(""); @@ -3187,7 +3187,6 @@ static int gr_gk20a_init_gr_config(struct gk20a *g, struct gr_gk20a *gr) g->ops.gr.bundle_cb_defaults(g); g->ops.gr.cb_size_default(g); g->ops.gr.calc_global_ctx_buffer_size(g); - g->ops.gr.buffer_size_defaults(g); gr->timeslice_mode = gr_gpcs_ppcs_cbm_cfg_timeslice_mode_enable_v(); gk20a_dbg_info("bundle_cb_default_size: %d", @@ -7318,12 +7317,9 @@ void gk20a_resume_all_sms(struct gk20a *g) gr_gpcs_tpcs_sm_dbgr_control0_r(), dbgr_control0); } -static void gr_gk20a_buffer_size_defaults(struct gk20a *g) +static u32 gr_gk20a_pagepool_default_size(struct gk20a *g) { - g->gr.pagepool_default_size = - gr_scc_pagepool_total_pages_hwmax_value_v(); - g->gr.pagepool_max_size = - gr_scc_pagepool_total_pages_hwmax_value_v(); + return gr_scc_pagepool_total_pages_hwmax_value_v(); } void gk20a_init_gr_ops(struct gpu_ops *gops) @@ -7362,6 +7358,6 @@ void gk20a_init_gr_ops(struct gpu_ops *gops) gops->gr.detect_sm_arch = gr_gk20a_detect_sm_arch; gops->gr.add_zbc_color = gr_gk20a_add_zbc_color; gops->gr.add_zbc_depth = gr_gk20a_add_zbc_depth; - gops->gr.buffer_size_defaults = gr_gk20a_buffer_size_defaults; + gops->gr.pagepool_default_size = gr_gk20a_pagepool_default_size; } diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h index c5dd80ea..e5d315e5 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h @@ -243,8 +243,6 @@ struct gr_gk20a { u32 alpha_cb_default_size; u32 alpha_cb_size; u32 timeslice_mode; - u32 pagepool_default_size; - u32 pagepool_max_size; struct gr_ctx_buffer_desc global_ctx_buffer[NR_GLOBAL_CTX_BUF]; diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c index 44fa6189..66b94943 100644 --- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c @@ -770,12 +770,9 @@ static void gr_gm20b_detect_sm_arch(struct gk20a *g) gr_gpc0_tpc0_sm_arch_warp_count_v(v); } -static void gr_gm20b_buffer_size_defaults(struct gk20a *g) +static u32 gr_gm20b_pagepool_default_size(struct gk20a *g) { - g->gr.pagepool_default_size = - gr_scc_pagepool_total_pages_hwmax_value_v(); - g->gr.pagepool_max_size = - gr_scc_pagepool_total_pages_hwmax_value_v(); + return gr_scc_pagepool_total_pages_hwmax_value_v(); } void gm20b_init_gr(struct gpu_ops *gops) @@ -815,5 +812,5 @@ void gm20b_init_gr(struct gpu_ops *gops) gops->gr.detect_sm_arch = gr_gm20b_detect_sm_arch; gops->gr.add_zbc_color = gr_gk20a_add_zbc_color; gops->gr.add_zbc_depth = gr_gk20a_add_zbc_depth; - gops->gr.buffer_size_defaults = gr_gm20b_buffer_size_defaults; + gops->gr.pagepool_default_size = gr_gm20b_pagepool_default_size; } -- cgit v1.2.2