Am 28.10.25 um 04:43 schrieb Chintan Patel:
Currently, wait_event_timeout() in drm_wait_one_vblank() uses a 100ms
timeout. Under heavy scheduling pressure or rare delayed vblank
handling, this can trigger WARNs unnecessarily.

Increase the timeout to 1000ms to reduce spurious WARNs, while still
catching genuine issues.

Thanks a lot.


Reported-by: [email protected]
Closes: https://syzkaller.appspot.com/bug?extid=147ba789658184f0ce04
Tested-by: [email protected]
Signed-off-by: Chintan Patel <[email protected]>

Reviewed-by: Thomas Zimmermann <[email protected]>


v2:
  - Dropped unnecessary in-code comment (suggested by Thomas Zimmermann)
  - Removed else branch, only log timeout case

v3:
  - Replaced drm_dbg_kms()/manual logging with drm_err() (suggested by Ville 
Syrjälä)
  - Removed unnecessary curr = drm_vblank_count() (suggested by Thomas 
Zimmermann)
  - Fixed commit message wording ("invalid userspace calls" → "delayed vblank 
handling")

v4:
  - Keep the original drm_WARN() to catch genuine kernel issues
  - Increased timeout from 100ms → 1000ms to reduce spurious WARNs (suggested 
by Thomas Zimmermann)
---
  drivers/gpu/drm/drm_vblank.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 46f59883183d..f779103b261b 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -1303,7 +1303,7 @@ void drm_wait_one_vblank(struct drm_device *dev, unsigned 
int pipe)
ret = wait_event_timeout(vblank->queue,
                                 last != drm_vblank_count(dev, pipe),
-                                msecs_to_jiffies(100));
+                                msecs_to_jiffies(1000));
drm_WARN(dev, ret == 0, "vblank wait timed out on crtc %i\n", pipe);

--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)


Reply via email to