diff --git a/drivers/gpu/nvgpu/common/gr/gr.c b/drivers/gpu/nvgpu/common/gr/gr.c index 0b1db1963..aaaf1fcb6 100644 --- a/drivers/gpu/nvgpu/common/gr/gr.c +++ b/drivers/gpu/nvgpu/common/gr/gr.c @@ -140,7 +140,7 @@ int nvgpu_gr_init_fs_state(struct gk20a *g) } if (g->ops.gr.config.init_sm_id_table != NULL) { - err = g->ops.gr.config.init_sm_id_table(g->gr.config); + err = g->ops.gr.config.init_sm_id_table(gr_config); if (err != 0) { return err; } @@ -190,3 +190,9 @@ int nvgpu_gr_init_fs_state(struct gk20a *g) return err; } + +/* Wait until GR is initialized */ +void nvgpu_gr_wait_initialized(struct gk20a *g) +{ + NVGPU_COND_WAIT(&g->gr.init_wq, g->gr.initialized, 0U); +} diff --git a/drivers/gpu/nvgpu/common/pmu/pg/pmu_pg.c b/drivers/gpu/nvgpu/common/pmu/pg/pmu_pg.c index 1fc02c902..814157e2b 100644 --- a/drivers/gpu/nvgpu/common/pmu/pg/pmu_pg.c +++ b/drivers/gpu/nvgpu/common/pmu/pg/pmu_pg.c @@ -29,6 +29,7 @@ #include #include #include +#include /* state transition : * OFF => [OFF_ON_PENDING optional] => ON_PENDING => ON => OFF @@ -535,7 +536,7 @@ int nvgpu_pmu_init_powergating(struct gk20a *g) pg_engine_id_list = g->ops.pmu.pmu_pg_supported_engines_list(g); } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); for (pg_engine_id = PMU_PG_ELPG_ENGINE_ID_GRAPHICS; pg_engine_id < PMU_PG_ELPG_ENGINE_ID_INVALID_ENGINE; diff --git a/drivers/gpu/nvgpu/common/power_features/cg/cg.c b/drivers/gpu/nvgpu/common/power_features/cg/cg.c index 7a4bc9eb5..5bb75efda 100644 --- a/drivers/gpu/nvgpu/common/power_features/cg/cg.c +++ b/drivers/gpu/nvgpu/common/power_features/cg/cg.c @@ -21,6 +21,7 @@ */ #include +#include #include #include @@ -93,7 +94,7 @@ void nvgpu_cg_elcg_enable(struct gk20a *g) return; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (g->elcg_enabled) { @@ -110,7 +111,7 @@ void nvgpu_cg_elcg_disable(struct gk20a *g) return; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (g->elcg_enabled) { @@ -128,7 +129,7 @@ void nvgpu_cg_blcg_mode_enable(struct gk20a *g) return; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (g->blcg_enabled) { @@ -146,7 +147,7 @@ void nvgpu_cg_blcg_mode_disable(struct gk20a *g) return; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (g->blcg_enabled) { @@ -304,7 +305,7 @@ void nvgpu_cg_slcg_gr_perf_ltc_load_enable(struct gk20a *g) return; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (!g->slcg_enabled) { @@ -331,7 +332,7 @@ void nvgpu_cg_slcg_gr_perf_ltc_load_disable(struct gk20a *g) return; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (!g->slcg_enabled) { @@ -475,7 +476,7 @@ void nvgpu_cg_elcg_set_elcg_enabled(struct gk20a *g, bool enable) return; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_release(&g->cg_pg_lock); if (enable) { @@ -502,7 +503,7 @@ void nvgpu_cg_blcg_set_blcg_enabled(struct gk20a *g, bool enable) return; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (enable) { @@ -563,7 +564,7 @@ void nvgpu_cg_slcg_set_slcg_enabled(struct gk20a *g, bool enable) return; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (enable) { diff --git a/drivers/gpu/nvgpu/common/power_features/pg/pg.c b/drivers/gpu/nvgpu/common/power_features/pg/pg.c index 394c08241..6758569cb 100644 --- a/drivers/gpu/nvgpu/common/power_features/pg/pg.c +++ b/drivers/gpu/nvgpu/common/power_features/pg/pg.c @@ -21,6 +21,7 @@ */ #include +#include #include #include @@ -46,7 +47,7 @@ int nvgpu_pg_elpg_enable(struct gk20a *g) return 0; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (g->elpg_enabled) { @@ -66,7 +67,7 @@ int nvgpu_pg_elpg_disable(struct gk20a *g) return 0; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (g->elpg_enabled) { @@ -87,7 +88,7 @@ int nvgpu_pg_elpg_set_elpg_enabled(struct gk20a *g, bool enable) return 0; } - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_mutex_acquire(&g->cg_pg_lock); if (enable) { diff --git a/drivers/gpu/nvgpu/common/power_features/power_features.c b/drivers/gpu/nvgpu/common/power_features/power_features.c index 7f52ba8e2..43e557dbe 100644 --- a/drivers/gpu/nvgpu/common/power_features/power_features.c +++ b/drivers/gpu/nvgpu/common/power_features/power_features.c @@ -21,6 +21,7 @@ */ #include +#include #include #include #include @@ -31,7 +32,7 @@ int nvgpu_cg_pg_disable(struct gk20a *g) nvgpu_log_fn(g, " "); - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); /* disable elpg before clock gating */ err = nvgpu_pg_elpg_disable(g); @@ -53,7 +54,7 @@ int nvgpu_cg_pg_enable(struct gk20a *g) nvgpu_log_fn(g, " "); - gk20a_gr_wait_initialized(g); + nvgpu_gr_wait_initialized(g); nvgpu_cg_elcg_enable(g); diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 48cb6c5fc..246921824 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c @@ -2252,12 +2252,6 @@ int gk20a_init_gr_support(struct gk20a *g) return 0; } -/* Wait until GR is initialized */ -void gk20a_gr_wait_initialized(struct gk20a *g) -{ - NVGPU_COND_WAIT(&g->gr.init_wq, g->gr.initialized, 0U); -} - #define NVA297_SET_ALPHA_CIRCULAR_BUFFER_SIZE 0x02dcU #define NVA297_SET_CIRCULAR_BUFFER_SIZE 0x1280U #define NVA297_SET_SHADER_EXCEPTIONS 0x1528U diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h index 692aa2de7..a3a314ed5 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h @@ -298,7 +298,6 @@ void gk20a_init_gr(struct gk20a *g); int gk20a_init_gr_support(struct gk20a *g); int gk20a_enable_gr_hw(struct gk20a *g); int gk20a_gr_reset(struct gk20a *g); -void gk20a_gr_wait_initialized(struct gk20a *g); int gk20a_init_gr_channel(struct channel_gk20a *ch_gk20a); diff --git a/drivers/gpu/nvgpu/include/nvgpu/gr/gr.h b/drivers/gpu/nvgpu/include/nvgpu/gr/gr.h index d54ef79b0..6d067e708 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/gr/gr.h +++ b/drivers/gpu/nvgpu/include/nvgpu/gr/gr.h @@ -32,5 +32,6 @@ int nvgpu_gr_suspend(struct gk20a *g); void nvgpu_gr_flush_channel_tlb(struct gk20a *g); u32 nvgpu_gr_get_idle_timeout(struct gk20a *g); int nvgpu_gr_init_fs_state(struct gk20a *g); +void nvgpu_gr_wait_initialized(struct gk20a *g); #endif /* NVGPU_GR_H */