]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/vmwgfx: Determine lock-waiting timeout from vblank state
authorThomas Zimmermann <tzimmermann@suse.de>
Mon, 27 Apr 2026 15:00:38 +0000 (17:00 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 4 May 2026 11:47:02 +0000 (13:47 +0200)
Use the calculated duration of a frame as stored in the vblank state
for the lock-waiting timeout. Decouples the waiting from the details
of the vblank implementation. Both values should be equal.

This will be helpful for replacing vmwgfx's vblank timer with DRM's
common implementation.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Zack Rusin <zack.rusin@broadcom.com>
Link: https://patch.msgid.link/20260427150250.699768-2-tzimmermann@suse.de
drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c

index 5abd7f5ad2db03199750f0b909234953a616ac88..7862f6972512f2f1d8f1792493a984b214bf1f46 100644 (file)
@@ -516,9 +516,13 @@ vmw_vkms_set_crc_surface(struct drm_crtc *crtc,
 static inline u64
 vmw_vkms_lock_max_wait_ns(struct vmw_display_unit *du)
 {
-       s64 nsecs = ktime_to_ns(du->vkms.period_ns);
+       struct drm_crtc *crtc = &du->crtc;
+       struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc);
+
+       if (!vblank || !vblank->framedur_ns)
+               return NSEC_PER_SEC / 60; /* disabled; assume 60 Hz */
 
-       return  (nsecs > 0) ? nsecs : 16666666;
+       return vblank->framedur_ns;
 }
 
 /**