drm/msm: remove the right vlbank event from the event list
This changes fixes an issue with vblank event list corruption. we should only remove the event corresponding to a crtc from list for which the thread was queued. Change-Id: I9b9cef9073ba4cc377a85e21a7257d36e9b92388 Signed-off-by: Rahul Sharma <sharah@codeaurora.org>
This commit is contained in:
parent
fec05057ef
commit
792779946e
1 changed files with 5 additions and 0 deletions
|
@ -185,9 +185,14 @@ static void vblank_ctrl_worker(struct kthread_work *work)
|
||||||
struct msm_kms *kms = priv->kms;
|
struct msm_kms *kms = priv->kms;
|
||||||
struct vblank_event *vbl_ev, *tmp;
|
struct vblank_event *vbl_ev, *tmp;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
struct kthread_worker *worker = work->worker;
|
||||||
|
struct msm_drm_commit *commit = container_of(worker,
|
||||||
|
struct msm_drm_commit, worker);
|
||||||
|
|
||||||
spin_lock_irqsave(&vbl_ctrl->lock, flags);
|
spin_lock_irqsave(&vbl_ctrl->lock, flags);
|
||||||
list_for_each_entry_safe(vbl_ev, tmp, &vbl_ctrl->event_list, node) {
|
list_for_each_entry_safe(vbl_ev, tmp, &vbl_ctrl->event_list, node) {
|
||||||
|
if (vbl_ev->crtc_id != commit->crtc_id)
|
||||||
|
continue;
|
||||||
list_del(&vbl_ev->node);
|
list_del(&vbl_ev->node);
|
||||||
spin_unlock_irqrestore(&vbl_ctrl->lock, flags);
|
spin_unlock_irqrestore(&vbl_ctrl->lock, flags);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue