From 2d670d258b2e592d44deb5ee12e7c2ba1d79d8a9 Mon Sep 17 00:00:00 2001 From: Roger Pau Monne Date: Fri, 10 Apr 2026 10:46:39 +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 --- 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 fed30a919d..4233ea507d 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -2728,7 +2728,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();