Loading drivers/video/msm/mdss/mdss_fb.c +16 −26 Original line number Diff line number Diff line Loading @@ -2146,7 +2146,7 @@ static int mdss_fb_release_all(struct fb_info *info, bool release_all) unknown_pid = false; pr_debug("found process %s pid=%d mfd->ref=%d pinfo->ref=%d\n", task->comm, mfd->ref_cnt, pinfo->pid, pinfo->ref_cnt); task->comm, pinfo->pid, mfd->ref_cnt, pinfo->ref_cnt); proc_info = mdss_fb_release_file_entry(info, pinfo, release_all); Loading @@ -2171,10 +2171,6 @@ static int mdss_fb_release_all(struct fb_info *info, bool release_all) pm_runtime_put(info->dev); } while (release_all && pinfo->ref_cnt); /* we need to stop display thread before release */ if (release_all && mfd->disp_thread) mdss_fb_stop_disp_thread(mfd); if (pinfo->ref_cnt == 0) { list_del(&pinfo->list); kfree(pinfo); Loading Loading @@ -2205,27 +2201,10 @@ static int mdss_fb_release_all(struct fb_info *info, bool release_all) } } if (release_needed) { pr_debug("current process=%s pid=%d known pid=%d mfd->ref=%d\n", task->comm, current->tgid, pid, mfd->ref_cnt); if (mfd->mdp.release_fnc) { ret = mfd->mdp.release_fnc(mfd, false, pid); if (ret) pr_err("error releasing fb%d for current pid=%d known pid=%d\n", mfd->index, current->tgid, pid); } } else if (release_all && mfd->ref_cnt) { pr_err("reference count mismatch with proc list entries\n"); } if (!mfd->ref_cnt) { if (mfd->mdp.release_fnc) { ret = mfd->mdp.release_fnc(mfd, true, pid); if (ret) pr_err("error fb%d release current process=%s pid=%d known pid=%d\n", mfd->index, task->comm, current->tgid, pid); } if (!mfd->ref_cnt || release_all) { /* resources (if any) will be released during blank */ if (mfd->mdp.release_fnc) mfd->mdp.release_fnc(mfd, true, pid); if (mfd->fb_ion_handle) mdss_fb_free_fb_ion_memory(mfd); Loading @@ -2238,6 +2217,17 @@ static int mdss_fb_release_all(struct fb_info *info, bool release_all) return ret; } atomic_set(&mfd->ioctl_ref_cnt, 0); } else if (release_needed) { pr_debug("current process=%s pid=%d known pid=%d mfd->ref=%d\n", task->comm, current->tgid, pid, mfd->ref_cnt); if (mfd->mdp.release_fnc) { ret = mfd->mdp.release_fnc(mfd, false, pid); /* display commit is needed to release resources */ if (ret) mdss_fb_pan_display(&mfd->fbi->var, mfd->fbi); } } return ret; Loading drivers/video/msm/mdss/mdss_mdp_overlay.c +3 −4 Original line number Diff line number Diff line Loading @@ -1683,6 +1683,8 @@ done: * * Release any resources allocated by calling process, this can be called * on fb_release to release any overlays/rotator sessions left open. * * Return number of resources released */ static int __mdss_mdp_overlay_release_all(struct msm_fb_data_type *mfd, bool release_all, uint32_t pid) Loading Loading @@ -1721,9 +1723,6 @@ static int __mdss_mdp_overlay_release_all(struct msm_fb_data_type *mfd, } mutex_unlock(&mdp5_data->ov_lock); if (cnt) mfd->mdp.kickoff_fnc(mfd, NULL); list_for_each_entry_safe(rot, tmp, &mdp5_data->rot_proc_list, list) { if (rot->pid == pid) { if (!list_empty(&rot->list)) Loading @@ -1732,7 +1731,7 @@ static int __mdss_mdp_overlay_release_all(struct msm_fb_data_type *mfd, } } return 0; return cnt; } static int mdss_mdp_overlay_play_wait(struct msm_fb_data_type *mfd, Loading Loading
drivers/video/msm/mdss/mdss_fb.c +16 −26 Original line number Diff line number Diff line Loading @@ -2146,7 +2146,7 @@ static int mdss_fb_release_all(struct fb_info *info, bool release_all) unknown_pid = false; pr_debug("found process %s pid=%d mfd->ref=%d pinfo->ref=%d\n", task->comm, mfd->ref_cnt, pinfo->pid, pinfo->ref_cnt); task->comm, pinfo->pid, mfd->ref_cnt, pinfo->ref_cnt); proc_info = mdss_fb_release_file_entry(info, pinfo, release_all); Loading @@ -2171,10 +2171,6 @@ static int mdss_fb_release_all(struct fb_info *info, bool release_all) pm_runtime_put(info->dev); } while (release_all && pinfo->ref_cnt); /* we need to stop display thread before release */ if (release_all && mfd->disp_thread) mdss_fb_stop_disp_thread(mfd); if (pinfo->ref_cnt == 0) { list_del(&pinfo->list); kfree(pinfo); Loading Loading @@ -2205,27 +2201,10 @@ static int mdss_fb_release_all(struct fb_info *info, bool release_all) } } if (release_needed) { pr_debug("current process=%s pid=%d known pid=%d mfd->ref=%d\n", task->comm, current->tgid, pid, mfd->ref_cnt); if (mfd->mdp.release_fnc) { ret = mfd->mdp.release_fnc(mfd, false, pid); if (ret) pr_err("error releasing fb%d for current pid=%d known pid=%d\n", mfd->index, current->tgid, pid); } } else if (release_all && mfd->ref_cnt) { pr_err("reference count mismatch with proc list entries\n"); } if (!mfd->ref_cnt) { if (mfd->mdp.release_fnc) { ret = mfd->mdp.release_fnc(mfd, true, pid); if (ret) pr_err("error fb%d release current process=%s pid=%d known pid=%d\n", mfd->index, task->comm, current->tgid, pid); } if (!mfd->ref_cnt || release_all) { /* resources (if any) will be released during blank */ if (mfd->mdp.release_fnc) mfd->mdp.release_fnc(mfd, true, pid); if (mfd->fb_ion_handle) mdss_fb_free_fb_ion_memory(mfd); Loading @@ -2238,6 +2217,17 @@ static int mdss_fb_release_all(struct fb_info *info, bool release_all) return ret; } atomic_set(&mfd->ioctl_ref_cnt, 0); } else if (release_needed) { pr_debug("current process=%s pid=%d known pid=%d mfd->ref=%d\n", task->comm, current->tgid, pid, mfd->ref_cnt); if (mfd->mdp.release_fnc) { ret = mfd->mdp.release_fnc(mfd, false, pid); /* display commit is needed to release resources */ if (ret) mdss_fb_pan_display(&mfd->fbi->var, mfd->fbi); } } return ret; Loading
drivers/video/msm/mdss/mdss_mdp_overlay.c +3 −4 Original line number Diff line number Diff line Loading @@ -1683,6 +1683,8 @@ done: * * Release any resources allocated by calling process, this can be called * on fb_release to release any overlays/rotator sessions left open. * * Return number of resources released */ static int __mdss_mdp_overlay_release_all(struct msm_fb_data_type *mfd, bool release_all, uint32_t pid) Loading Loading @@ -1721,9 +1723,6 @@ static int __mdss_mdp_overlay_release_all(struct msm_fb_data_type *mfd, } mutex_unlock(&mdp5_data->ov_lock); if (cnt) mfd->mdp.kickoff_fnc(mfd, NULL); list_for_each_entry_safe(rot, tmp, &mdp5_data->rot_proc_list, list) { if (rot->pid == pid) { if (!list_empty(&rot->list)) Loading @@ -1732,7 +1731,7 @@ static int __mdss_mdp_overlay_release_all(struct msm_fb_data_type *mfd, } } return 0; return cnt; } static int mdss_mdp_overlay_play_wait(struct msm_fb_data_type *mfd, Loading