mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 20:33:58 -04:00
disp: msm: sde: flush commit thread queue during pm suspend
Following is the sequence during which issue is observed: 1) After suspend, resume commit is with doze suspend mode (LP2) but kickoff didn't begin. 2) At the same time, runtime pm suspend is triggered which makes idle request on pm suspend/resume thread. 3) Since the kickoff has not yet started on commit thread, pending kickoff count is not updated and idle power collapse sequence is started from pm suspend. 4) As part of idle, irqs are turned off from pm suspend thread which are turned on commit thread after kickoff before pp tx irq arrives. In such cases, during pm suspend, commit thread workqueue is flushed before encoder idle request to prevent irq's from getting turned off before the transfer is complete to avoid inconsistent state. Change-Id: I417ece0ae7021b0fc5005e262a0d87e43ac729be Signed-off-by: Yashwanth <yvulapu@codeaurora.org>
This commit is contained in:
parent
fbe759f998
commit
bb6f15ba11
1 changed files with 5 additions and 1 deletions
|
|
@ -3492,6 +3492,11 @@ static void _sde_kms_pm_suspend_idle_helper(struct sde_kms *sde_kms,
|
|||
if (sde_encoder_in_clone_mode(conn->encoder))
|
||||
continue;
|
||||
|
||||
crtc_id = drm_crtc_index(conn->state->crtc);
|
||||
if (priv->disp_thread[crtc_id].thread)
|
||||
kthread_flush_worker(
|
||||
&priv->disp_thread[crtc_id].worker);
|
||||
|
||||
ret = sde_encoder_wait_for_event(conn->encoder,
|
||||
MSM_ENC_TX_COMPLETE);
|
||||
if (ret && ret != -EWOULDBLOCK) {
|
||||
|
|
@ -3499,7 +3504,6 @@ static void _sde_kms_pm_suspend_idle_helper(struct sde_kms *sde_kms,
|
|||
"[conn: %d] wait for commit done returned %d\n",
|
||||
conn->base.id, ret);
|
||||
} else if (!ret) {
|
||||
crtc_id = drm_crtc_index(conn->state->crtc);
|
||||
if (priv->event_thread[crtc_id].thread)
|
||||
kthread_flush_worker(
|
||||
&priv->event_thread[crtc_id].worker);
|
||||
|
|
|
|||
Loading…
Reference in a new issue