On Thu, Jul 6, 2017 at 12:16 PM, Ville Syrjälä ville.syrjala@linux.intel.com wrote:
- if (!dev->irq_enabled)
return -EINVAL;
- crtc = drm_crtc_find(dev, get_seq->crtc_id);
- if (!crtc)
return -ENOENT;
- pipe = drm_crtc_index(crtc);
- get_seq->sequence = drm_vblank_count_and_time(dev, pipe, &now);
This can give you and old vblank if the vblank is off (i.e. sw state hasn't be regularly updated). I think we want a new drm_crtc_accurate_vblank_count_and_time variant.
Or better yet just do what Chris did for the old ioctl in commit b33b02707ba3 ("drm: Peek at the current counter/timestamp for vblank queries")
Yeah the READ_ONCE(vblank->enabled) is a nice fastpath. But we still need the accurate one as slowpath in case the vblank irq is off. -Daniel