From 9c79644d359b24eadb2af1d40c5b2fa49e2bfc5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Date: Mon, 20 Apr 2026 12:27:45 +0200 Subject: [PATCH] x86/time: do not kill calibration timer on suspend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: 6d90db1a2ca1 ("x86: rendezvous-based local time calibration") Reported-by: Marek Marczykowski-Górecki Signed-off-by: Roger Pau Monné Reviewed-by: Andrew Cooper Tested-by: Marek Marczykowski-Górecki master commit: 2d670d258b2e592d44deb5ee12e7c2ba1d79d8a9 master date: 2026-04-10 14:31:10 +0200 --- xen/arch/x86/time.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 3b451525a9..bb36038e0c 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -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();