diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c index db0a4609a2856..1b50f1e348009 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c @@ -3180,11 +3180,7 @@ gk20a_pmu_init(struct nvkm_object *object) nvkm_timer_alarm(priv, PMU_DVFS_INTERVAL, &priv->alarm); mutex_lock(&priv->elpg_mutex); - /* - * ELPG will be enabled when PMU finishes booting, so setting the - * counter to 1 initialy. - */ - priv->elpg_disable_depth = 1; + priv->elpg_disable_depth = 0; mutex_unlock(&priv->elpg_mutex); mutex_lock(&priv->clk_gating_mutex); @@ -3206,6 +3202,10 @@ gk20a_pmu_fini(struct nvkm_object *object, bool suspend) cancel_work_sync(&priv->base.recv.work); cancel_work_sync(&priv->pg_init); + mutex_lock(&priv->elpg_mutex); + priv->elpg_disable_depth = 0; + mutex_unlock(&priv->elpg_mutex); + mutex_lock(&priv->clk_gating_mutex); priv->clk_gating_disable_depth = 0; mutex_unlock(&priv->clk_gating_mutex); diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c index e22282ecc9f27..c9a7025124790 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c @@ -2592,6 +2592,9 @@ gm20b_pmu_fini(struct nvkm_object *object, bool suspend) gk20a_pmu_enable(priv, pmc, false); priv->isr_enabled = false; mutex_unlock(&priv->isr_mutex); + mutex_lock(&priv->elpg_mutex); + priv->elpg_disable_depth = 0; + mutex_unlock(&priv->elpg_mutex); priv->pmu_state = PMU_STATE_OFF; mutex_lock(&priv->clk_gating_mutex); priv->clk_gating_disable_depth = 0; @@ -2668,11 +2671,7 @@ gm20b_pmu_init(struct nvkm_object *object) { priv->pmu_setup_elpg = gm20b_pmu_setup_elpg; mutex_lock(&priv->elpg_mutex); - /* - * ELPG will be enabled when PMU finishes booting, so setting the - * counter to 1 initialy. - */ - priv->elpg_disable_depth = 1; + priv->elpg_disable_depth = 0; mutex_unlock(&priv->elpg_mutex); mutex_lock(&priv->clk_gating_mutex);