msm: mdss: call wait4comp before wb kickoff
when wfd is tear down, HW still fetch the address of buffer queue which was already released and while cancelling the buffer cause the iommu page fault. Call wait4comp before kickoff is called to avoid iommu page fault. Change-Id: Ia597b395e13072374cfe3d5fa8216363946bff16 Signed-off-by: Raghavendra Ambadas <rambad@codeaurora.org>
This commit is contained in:
parent
3237117000
commit
57186ab946
1 changed files with 7 additions and 0 deletions
|
@ -557,6 +557,7 @@ static int mdss_mdp_wb_dequeue(struct msm_fb_data_type *mfd,
|
|||
{
|
||||
struct mdss_mdp_wb *wb = mfd_to_wb(mfd);
|
||||
struct mdss_mdp_wb_data *node = NULL;
|
||||
struct mdss_mdp_ctl *ctl = mfd_to_ctl(mfd);
|
||||
int ret;
|
||||
|
||||
if (!wb) {
|
||||
|
@ -564,6 +565,11 @@ static int mdss_mdp_wb_dequeue(struct msm_fb_data_type *mfd,
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (!ctl) {
|
||||
pr_err("unable to dequeue, ctl is not initialized\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
ret = wait_event_interruptible(wb->wait_q, is_buffer_ready(wb));
|
||||
if (ret) {
|
||||
pr_err("failed to get dequeued buffer\n");
|
||||
|
@ -573,6 +579,7 @@ static int mdss_mdp_wb_dequeue(struct msm_fb_data_type *mfd,
|
|||
mutex_lock(&wb->lock);
|
||||
if (wb->state == WB_STOPING) {
|
||||
pr_debug("wfd stopped\n");
|
||||
mdss_mdp_display_wait4comp(ctl);
|
||||
wb->state = WB_STOP;
|
||||
ret = -ENOBUFS;
|
||||
} else if (!list_empty(&wb->busy_queue)) {
|
||||
|
|
Loading…
Add table
Reference in a new issue