x86/time: do not kill calibration timer on suspend

A killed timer will ignore further set_timer() calls, and hence won't be
re-armed unless it's initialized again.  Use stop_timer() instead of
kill_timer() in time_suspend(), so that the set_timer() call in
time_resume() successfully re-arms the timer.  Otherwise time calibration
is no longer scheduled (and executed) after resuming from S3 suspend.

Fixes: 6d90db1a2c ("x86: rendezvous-based local time calibration")
Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
master commit: 2d670d258b
master date: 2026-04-10 14:31:10 +0200
This commit is contained in:
Roger Pau Monné authored and Jan Beulich committed 2026-04-20 12:27:45 +02:00
1 parent 6b8be120c8
commit 9c79644d35
1 file changed
+1 -1
+1 -1
View File
@@ -2720,7 +2720,7 @@ int time_suspend(void)
{
cmos_utc_offset = -get_wallclock_time();
cmos_utc_offset += get_sec();
kill_timer(&calibration_timer);
stop_timer(&calibration_timer);
/* Sync platform timer stamps. */
platform_time_calibration();
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.