From a0ed5bcfbeee81c91c574ad484faa057054eaf09 Mon Sep 17 00:00:00 2001 From: Roger Pau Monne Date: Thu, 26 Feb 2026 18:54:19 +0100 Subject: [PATCH] xen/cpufreq: fix usages of align_timer() in the on-demand governor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first parameter passed to align_timer() is the timer expiration, not the current time. Adjust the calls to align_timer() in the on-demand governor to pass the expected timer expiration as the first parameter. Fixes: af74e3a15a83 ("cpufreq: align dbs timer for better package C state residency") Fixes: 382b95f627a9 ("Fix cpufreq HW-ALL coordination handle") Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich --- xen/drivers/cpufreq/cpufreq_ondemand.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xen/drivers/cpufreq/cpufreq_ondemand.c b/xen/drivers/cpufreq/cpufreq_ondemand.c index 537695eaab..0d94c0e464 100644 --- a/xen/drivers/cpufreq/cpufreq_ondemand.c +++ b/xen/drivers/cpufreq/cpufreq_ondemand.c @@ -185,7 +185,8 @@ static void cf_check do_dbs_timer(void *dbs) dbs_check_cpu(dbs_info); set_timer(&per_cpu(dbs_timer, dbs_info->cpu), - align_timer(NOW() , dbs_tuners_ins.sampling_rate)); + align_timer(NOW() + dbs_tuners_ins.sampling_rate, + dbs_tuners_ins.sampling_rate)); } static void dbs_timer_init(struct cpu_dbs_info_s *dbs_info) @@ -400,6 +401,6 @@ void cpufreq_dbs_timer_resume(void) (void)cmpxchg(stoppable, -1, 1); } else - set_timer(t, align_timer(now, dbs_tuners_ins.sampling_rate)); + set_timer(t, align_timer(t->expires, dbs_tuners_ins.sampling_rate)); } }