diff options
author | Andrew Bresticker <abrestic@chromium.org> | 2016-01-27 13:40:19 -0800 |
---|---|---|
committer | Andrew Bresticker <abrestic@google.com> | 2016-01-27 22:47:29 +0000 |
commit | dac6ee4b1a6c15e200377c66e0036744e0b35eaf (patch) | |
tree | 72e6328327e6ce0cf64608f145ab870f48099f3e | |
parent | c0697769dfff30c9c5fc33cec4289bb205281372 (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.c | 10 | ||||
-rw-r--r-- | 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 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); |