Commit a6778e9e authored by Ilija Hadzic's avatar Ilija Hadzic Committed by Dave Airlie

drm: add some comments to drm_wait_vblank and drm_queue_vblank_event

during the review of the fix for locks problems in drm_wait_vblank,
a couple of false concerns were raised about how the drm_vblank_get
and drm_vblank_put are used in this function; it turned out that the
code is correct and that it cannot be simplified

add a few comments to explain non-obvious flows in the code,
to prevent "false alarms" in the future

v2: incorporate comments received from Daniel Vetter
Signed-off-by: default avatarIlija Hadzic <ihadzic@research.bell-labs.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent bfba1658
...@@ -1125,6 +1125,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe, ...@@ -1125,6 +1125,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
trace_drm_vblank_event_delivered(current->pid, pipe, trace_drm_vblank_event_delivered(current->pid, pipe,
vblwait->request.sequence); vblwait->request.sequence);
} else { } else {
/* drm_handle_vblank_events will call drm_vblank_put */
list_add_tail(&e->base.link, &dev->vblank_event_list); list_add_tail(&e->base.link, &dev->vblank_event_list);
vblwait->reply.sequence = vblwait->request.sequence; vblwait->reply.sequence = vblwait->request.sequence;
} }
...@@ -1205,8 +1206,12 @@ int drm_wait_vblank(struct drm_device *dev, void *data, ...@@ -1205,8 +1206,12 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
goto done; goto done;
} }
if (flags & _DRM_VBLANK_EVENT) if (flags & _DRM_VBLANK_EVENT) {
/* must hold on to the vblank ref until the event fires
* drm_vblank_put will be called asynchronously
*/
return drm_queue_vblank_event(dev, crtc, vblwait, file_priv); return drm_queue_vblank_event(dev, crtc, vblwait, file_priv);
}
if ((flags & _DRM_VBLANK_NEXTONMISS) && if ((flags & _DRM_VBLANK_NEXTONMISS) &&
(seq - vblwait->request.sequence) <= (1<<23)) { (seq - vblwait->request.sequence) <= (1<<23)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment