summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJayant Shekhar <jshekhar@codeaurora.org>2014-07-23 19:45:20 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:33:07 -0700
commite53e4604f453459673f0bfcaafb96bc6f8a2f199 (patch)
tree6fb015e5f9ae0e3695922b10c0c0b05b3d20fe01
parent27d82c4f8726364430f419ec72e3bbc6057a89b4 (diff)
msm: mdss: Ensure pipe are unstaged before destroy
There are corner cases when pipes are still staged after recovery sequence is over in overlay cleanup. Due to this when destroying pipe, if pipe fetch halt tries to halt the pipe, kernel bug happens and system gets crashed. Hence, ensure pipes are unstaged before destroy. Change-Id: If13ca0fce35656ecbc8f3c98e3017ac981dede06 Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_overlay.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c
index 14f6475bd798..4efcdcbdbf2a 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c
@@ -1196,6 +1196,10 @@ static void mdss_mdp_overlay_cleanup(struct msm_fb_data_type *mfd)
__mdss_mdp_overlay_free_list_add(mfd, &pipe->front_buf);
mdss_mdp_overlay_free_buf(&pipe->back_buf);
list_del_init(&pipe->list);
+ if (recovery_mode) {
+ mdss_mdp_mixer_pipe_unstage(pipe, pipe->mixer_left);
+ mdss_mdp_mixer_pipe_unstage(pipe, pipe->mixer_right);
+ }
mdss_mdp_pipe_destroy(pipe);
}
mutex_unlock(&mdp5_data->list_lock);