From 1349c4cab2a8e6f1cc431b2168992562c7dcf9b1 Mon Sep 17 00:00:00 2001 From: Naseer Ahmed <naseer@codeaurora.org> Date: Mon, 24 Nov 2014 21:05:16 -0500 Subject: [PATCH] msm: rotator: Wait for the pending commits in finish IOCTL Due to asynchronuous rotator mechanism, sometimes the MSM_ROTATOR_IOCTL_FINISH arrives before the previously queued do_rotate work is completed. This causes fence to be signalled before the buffer is used by rotator. In case of fast YUV 2 pass scenario, this causes IOMMU page fault on 2 pass buffers, since the buffer is unmapped when the rotator is still using it. Hence, wait for the pending commit works to be finished before releasing the fence and freeing the 2 pass buffers. Change-Id: Iec9edd11406d102c7dd102c2ad7935184bbbba93 Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org> Signed-off-by: Naseer Ahmed <naseer@codeaurora.org> --- drivers/char/msm_rotator.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/char/msm_rotator.c b/drivers/char/msm_rotator.c index 684d283c7070..03ad5b72745b 100644 --- a/drivers/char/msm_rotator.c +++ b/drivers/char/msm_rotator.c @@ -2101,6 +2101,7 @@ static int msm_rotator_finish(unsigned long arg) if (copy_from_user(&session_id, (void __user *)arg, sizeof(s))) return -EFAULT; + rot_wait_for_commit_queue(true); mutex_lock(&msm_rotator_dev->rotator_lock); for (s = 0; s < MAX_SESSIONS; s++) { if ((msm_rotator_dev->rot_session[s] != NULL) && -- GitLab