From 18dd0531c7659a28cd49ca2ac3c4a14c6603c28e Mon Sep 17 00:00:00 2001 From: Krishna Chaitanya Devarakonda Date: Thu, 16 Nov 2017 19:14:12 +0530 Subject: [PATCH] msm: mdss: Signal outstanding fences when panel is dead When the panel is in dead state, we early return from the commit. So, the fences wouldn't be signalled till the next Blank call. Handling this case by signalling the outstanding fences when panel is in dead state. Change-Id: I48a5e04707e32de0d1cdccf0592c981e30b618fc Signed-off-by: Krishna Chaitanya Devarakonda --- drivers/video/fbdev/msm/mdss_fb.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c index c6b6ca280015..6c4db0f1f5bd 100644 --- a/drivers/video/fbdev/msm/mdss_fb.c +++ b/drivers/video/fbdev/msm/mdss_fb.c @@ -4661,6 +4661,7 @@ static int mdss_fb_atomic_commit_ioctl(struct fb_info *info, struct mdp_destination_scaler_data *ds_data = NULL; struct mdp_destination_scaler_data __user *ds_data_user; struct msm_fb_data_type *mfd; + struct mdss_overlay_private *mdp5_data = NULL; ret = copy_from_user(&commit, argp, sizeof(struct mdp_layer_commit)); if (ret) { @@ -4672,9 +4673,20 @@ static int mdss_fb_atomic_commit_ioctl(struct fb_info *info, if (!mfd) return -EINVAL; + mdp5_data = mfd_to_mdp5_data(mfd); + if (mfd->panel_info->panel_dead) { pr_debug("early commit return\n"); MDSS_XLOG(mfd->panel_info->panel_dead); + /* + * In case of an ESD attack, since we early return from the + * commits, we need to signal the outstanding fences. + */ + mdss_fb_release_fences(mfd); + if ((mfd->panel.type == MIPI_CMD_PANEL) && + mfd->mdp.signal_retire_fence && mdp5_data) + mfd->mdp.signal_retire_fence(mfd, + mdp5_data->retire_cnt); return 0; }