From dac6ee4b1a6c15e200377c66e0036744e0b35eaf Mon Sep 17 00:00:00 2001 From: Andrew Bresticker <abrestic@chromium.org> Date: Wed, 27 Jan 2016 13:40:19 -0800 Subject: [PATCH] Revert "Revert "drm/nouveau: pmu: Change the init value of elpg_disable_depth to 1"" This reverts commit 41b5f71a3a131dd25967631d8eb9481d6e692558. Nouveau ELPG appears to be causing hangs at reboot time. Disable it for now until the root cause is found. BUG=b:26544917 TEST=reboot-cycle.sh on Smaug. Change-Id: Ie682aceeb62af98392180d41208a1aa905700651 Signed-off-by: Andrew Bresticker <abrestic@chromium.org> Reviewed-on: https://chrome-internal-review.googlesource.com/246296 Reviewed-by: David Riley <davidriley@google.com> Commit-Queue: Andrew Bresticker <abrestic@google.com> Tested-by: Andrew Bresticker <abrestic@google.com> --- drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c | 10 +++++----- drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c | 9 +++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c index 1c15b73efc6f2..d3cb4ba83731f 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c @@ -3182,7 +3182,11 @@ gk20a_pmu_init(struct nvkm_object *object) nvkm_timer_alarm(priv, PMU_DVFS_INTERVAL, &priv->alarm); mutex_lock(&priv->elpg_mutex); - priv->elpg_disable_depth = 0; + /* + * ELPG will be enabled when PMU finishes booting, so setting the + * counter to 1 initialy. + */ + priv->elpg_disable_depth = 1; mutex_unlock(&priv->elpg_mutex); mutex_lock(&priv->clk_gating_mutex); @@ -3204,10 +3208,6 @@ 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 a0507655c4b65..450b14220b728 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c @@ -2613,9 +2613,6 @@ 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; @@ -2694,7 +2691,11 @@ gm20b_pmu_init(struct nvkm_object *object) { priv->pmu_setup_elpg = gm20b_pmu_setup_elpg; mutex_lock(&priv->elpg_mutex); - priv->elpg_disable_depth = 0; + /* + * ELPG will be enabled when PMU finishes booting, so setting the + * counter to 1 initialy. + */ + priv->elpg_disable_depth = 1; mutex_unlock(&priv->elpg_mutex); mutex_lock(&priv->clk_gating_mutex);