DRM's WAIT_VBLANK ioctl synchronizes user-space clients to display refresh. This is meaningless with vblank timers, which run unrelated to the hardware's vblank.
Disable the ioctl for simulated vblanks. Set DRM_VBLANK_FLAG_SIMULATED for CRTCs with simulated vblank events in all such drivers. The vblank timers of these devices still rate-limit the number of page-flip events to match the display refresh. According to maintainers, user-space compositors do not require the ioctl for rate-limitting display output. Weston and Kwin rely on page-flip events. Mutter uses and internal timer to limit the number of display updates per second. When testing with mutter and weston, the page-flip rate appears correct with the patch set applied. This change has been discussed at length on IRC recently. https://people.freedesktop.org/~cbrill/dri-log/?channel=dri-devel&highlight_names=&date=2026-05-08&show_html=true https://people.freedesktop.org/~cbrill/dri-log/?channel=dri-devel&highlight_names=&date=2026-05-12&show_html=true https://people.freedesktop.org/~cbrill/dri-log/?channel=dri-devel&highlight_names=&date=2026-05-13&show_html=true Thomas Zimmermann (9): drm/vblank: Add drmm_vblank_init() to indicate managed cleanup drm/vblank: Add DRM_VBLANK_FLAG_SIMULATED drm/amdgpu: vkms: Set DRM_VBLANK_FLAG_SIMULATED drm/bochs: Set DRM_VBLANK_FLAG_SIMULATED drm/cirrus: Set DRM_VBLANK_FLAG_SIMULATED drm/hypervdrm: Set DRM_VBLANK_FLAG_SIMULATED drm/qxl: Set DRM_VBLANK_FLAG_SIMULATED drm/virtgpu: Set DRM_VBLANK_FLAG_SIMULATED drm/vkms: Set DRM_VBLANK_FLAG_SIMULATED drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 3 ++- drivers/gpu/drm/drm_vblank.c | 19 ++++++++++++------- drivers/gpu/drm/drm_vblank_helper.c | 2 +- drivers/gpu/drm/hyperv/hyperv_drm_modeset.c | 2 +- drivers/gpu/drm/qxl/qxl_display.c | 2 +- drivers/gpu/drm/tiny/bochs.c | 2 +- drivers/gpu/drm/tiny/cirrus-qemu.c | 2 +- drivers/gpu/drm/virtio/virtgpu_display.c | 2 +- drivers/gpu/drm/vkms/vkms_drv.c | 4 ++-- include/drm/drm_crtc.h | 2 +- include/drm/drm_device.h | 2 +- include/drm/drm_vblank.h | 15 ++++++++++++++- 12 files changed, 38 insertions(+), 19 deletions(-) base-commit: 121c16f9d8c56ea07263df84ab971cc10870fe88 -- 2.54.0
