Signal kickoff_wait_q on DMA done
After reverting 00e29cc5de92 the device would sometimes reboot when
attempting to enter suspend.
Specifically, we would no longer signal MDP_NOTIFY_FRAME_CTX_DONE which
could cause us to block for 30 seconds in mdp3_ctrl_off waiting on
'kickoff_wait_q'.
Instead we retain the code which signals kickoff_wait_q and remove the
check which makes it conditional on 'wait_for_kickoff'.
Bug: 74620493
Change-Id: I9e297ec0f0f5f04ec822e4c92ab910206a9df269
Signed-off-by: Matthew Bouyack <mbouyack@google.com>
diff --git a/drivers/video/msm/mdss/mdp3_ctrl.c b/drivers/video/msm/mdss/mdp3_ctrl.c
index 9f17f0f1..f04a373 100755
--- a/drivers/video/msm/mdss/mdp3_ctrl.c
+++ b/drivers/video/msm/mdss/mdp3_ctrl.c
@@ -156,6 +156,7 @@
while (cnt > 0) {
mdp3_ctrl_notify(session, MDP_NOTIFY_FRAME_DONE);
atomic_dec(&session->dma_done_cnt);
+ mdp3_ctrl_notify(session, MDP_NOTIFY_FRAME_CTX_DONE);
cnt--;
}
}
diff --git a/drivers/video/msm/mdss/mdss_fb.c b/drivers/video/msm/mdss/mdss_fb.c
index 28a523a..8cb2945 100755
--- a/drivers/video/msm/mdss/mdss_fb.c
+++ b/drivers/video/msm/mdss/mdss_fb.c
@@ -3450,10 +3450,8 @@
static void mdss_fb_release_kickoff(struct msm_fb_data_type *mfd)
{
- if (mfd->wait_for_kickoff) {
- atomic_set(&mfd->kickoff_pending, 0);
- wake_up_all(&mfd->kickoff_wait_q);
- }
+ atomic_set(&mfd->kickoff_pending, 0);
+ wake_up_all(&mfd->kickoff_wait_q);
}
/**