[PATCH v4] drm/vblank: Increase timeout in drm_wait_one_vblank()

Chintan Patel posted 1 patch 3 months, 1 week ago
drivers/gpu/drm/drm_vblank.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v4] drm/vblank: Increase timeout in drm_wait_one_vblank()
Posted by Chintan Patel 3 months, 1 week ago
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.

Reported-by: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=147ba789658184f0ce04
Tested-by: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
Signed-off-by: Chintan Patel <chintanlike@gmail.com>

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);
 
-- 
2.43.0

Re: [PATCH v4] drm/vblank: Increase timeout in drm_wait_one_vblank()
Posted by Thomas Zimmermann 3 months, 1 week ago

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: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=147ba789658184f0ce04
> Tested-by: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
> Signed-off-by: Chintan Patel <chintanlike@gmail.com>

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

>
> 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)


Re: [PATCH v4] drm/vblank: Increase timeout in drm_wait_one_vblank()
Posted by Chintan Patel 2 months ago
Hi Thomas,

On 10/28/25 10:14, Thomas Zimmermann wrote:
> 
> 
> 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: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
>> Closes: https://syzkaller.appspot.com/bug?extid=147ba789658184f0ce04
>> Tested-by: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
>> Signed-off-by: Chintan Patel <chintanlike@gmail.com>
> 
> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

Gentle ping on this patch. Please let me know if there are any issues 
with the patch, or if it requires any changes or further testing.

>>
>> 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);
> 

Re: [PATCH v4] drm/vblank: Increase timeout in drm_wait_one_vblank()
Posted by Thomas Zimmermann 2 months ago
Hi

Am 04.12.25 um 04:44 schrieb Chintan Patel:
> Hi Thomas,
>
> On 10/28/25 10:14, Thomas Zimmermann wrote:
>>
>>
>> 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: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
>>> Closes: https://syzkaller.appspot.com/bug?extid=147ba789658184f0ce04
>>> Tested-by: syzbot+147ba789658184f0ce04@syzkaller.appspotmail.com
>>> Signed-off-by: Chintan Patel <chintanlike@gmail.com>
>>
>> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
>
> Gentle ping on this patch. Please let me know if there are any issues 
> with the patch, or if it requires any changes or further testing.

It's on its way already. This patch has been merged as commit 
f050da08a4ed ("drm/vblank: Increase timeout in drm_wait_one_vblank()"). 
It was part of the recent PR for v6.19-rc1.

Best regards
Thomas

[1] 
https://lore.kernel.org/dri-devel/CAPM=9tySHmq2KLAvW95MeKcb-37gZBhHTY5hf4dCTgUFLd+RKg@mail.gmail.com/T/#u

>
>>>
>>> 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
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)


Re: [PATCH v4] drm/vblank: Increase timeout in drm_wait_one_vblank()
Posted by Chintan Patel 3 months, 1 week ago

On 10/28/25 10:14, Thomas Zimmermann wrote:
> 
> 
> 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.
> 

Appreciate your guidance !