aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bresticker <abrestic@chromium.org>2016-01-27 13:40:19 -0800
committerAndrew Bresticker <abrestic@google.com>2016-01-27 22:47:29 +0000
commitdac6ee4b1a6c15e200377c66e0036744e0b35eaf (patch)
tree72e6328327e6ce0cf64608f145ab870f48099f3e
parentc0697769dfff30c9c5fc33cec4289bb205281372 (diff)
Revert "Revert "drm/nouveau: pmu: Change the init value of elpg_disable_depth to 1""MXC14G
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>
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c10
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c9
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 1c15b73efc6f..d3cb4ba83731 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 a0507655c4b6..450b14220b72 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);