Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be63786c authored by raghavendra ambadas's avatar raghavendra ambadas
Browse files

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: default avatarRaghavendra Ambadas <rambad@codeaurora.org>
parent 57301a09
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -566,6 +566,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) {
@@ -573,6 +574,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");
@@ -582,6 +588,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)) {