lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <686ae9c3d4697956d16eff0b6f2e6e43cb25ba90@intel.com>
Date: Fri, 09 Jan 2026 10:18:08 +0200
From: Jani Nikula <jani.nikula@...ux.intel.com>
To: Aaron Erhardt <aer@...edocomputers.com>, Maarten Lankhorst
 <maarten.lankhorst@...ux.intel.com>, Maxime Ripard <mripard@...nel.org>,
 Thomas Zimmermann <tzimmermann@...e.de>, David Airlie <airlied@...il.com>,
 Simona Vetter <simona@...ll.ch>
Cc: Aaron Erhardt <aer@...edocomputers.com>,
 dri-devel@...ts.freedesktop.org, linux-kernel@...r.kernel.org
Subject: Re: [RESEND RFC PATCH 1/1] drm: ensure that vblank diff is never
 negative

On Thu, 08 Jan 2026, Aaron Erhardt <aer@...edocomputers.com> wrote:
> Handle cases, where drivers report incorrect timestamps and negative
> time differences are calculated. If the negative difference is large
> enough, negative missed vblanks are reported, but stored in an unsigned
> integer which can causes freezes. This patch prevents this case.
>
> This fix has been verified to fix problems with the i915 driver on
> modern Intel CPUs (e.g. Intel Core Ultra 7 155H).

Is there a reported bug about this, preferrably with logs? If not,
please file one as instructed at [1], and reference the patch.


BR,
Jani.


[1] https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.html


>
> Signed-off-by: Aaron Erhardt <aer@...edocomputers.com>
> ---
>  drivers/gpu/drm/drm_vblank.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index 94e45ed6869d..1022b6d61e4e 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -1563,7 +1563,14 @@ static void drm_vblank_restore(struct drm_device *dev, unsigned int pipe)
>  	} while (cur_vblank != __get_vblank_counter(dev, pipe) && --count > 0);
>  
>  	diff_ns = ktime_to_ns(ktime_sub(t_vblank, vblank->time));
> -	if (framedur_ns)
> +
> +	/*
> +	 * Make sure no bogus diffs result from negative differences
> +	 * when incorrect timestamps are reported by a driver.
> +	 */
> +	if (drm_WARN_ON_ONCE(dev, t_vblank < vblank->time))
> +		diff = 0;
> +	else if (framedur_ns)
>  		diff = DIV_ROUND_CLOSEST_ULL(diff_ns, framedur_ns);

-- 
Jani Nikula, Intel

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ