|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] xen/cpu: round cpu_khz calculations
commit 986707b461eb56d75f55581dd1c8e2633f814795
Author: Roger Pau Monne <roger.pau@xxxxxxxxxx>
AuthorDate: Tue Apr 14 09:38:55 2026 +0200
Commit: Roger Pau Monne <roger.pau@xxxxxxxxxx>
CommitDate: Thu Apr 16 15:28:32 2026 +0200
xen/cpu: round cpu_khz calculations
All arches truncate the cpu_khz without taking into account the less
significant digits. Instead use DIV_ROUND() when scaling from Hz to kHz
to get as more accurate kHz value.
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
---
xen/arch/arm/time.c | 4 ++--
xen/arch/riscv/time.c | 2 +-
xen/arch/x86/time.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
index a12912a106..6955b2788f 100644
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -118,7 +118,7 @@ static void __init preinit_dt_xen_time(void)
res = dt_property_read_u32(timer, "clock-frequency", &rate);
if ( res )
{
- cpu_khz = rate / 1000;
+ cpu_khz = DIV_ROUND(rate, 1000);
validate_timer_frequency();
timer_dt_clock_frequency = rate;
}
@@ -136,7 +136,7 @@ void __init preinit_xen_time(void)
if ( !cpu_khz )
{
- cpu_khz = (READ_SYSREG(CNTFRQ_EL0) & CNTFRQ_MASK) / 1000;
+ cpu_khz = DIV_ROUND(READ_SYSREG(CNTFRQ_EL0) & CNTFRQ_MASK, 1000);
validate_timer_frequency();
}
diff --git a/xen/arch/riscv/time.c b/xen/arch/riscv/time.c
index 7efa76fdbc..698ab49d12 100644
--- a/xen/arch/riscv/time.c
+++ b/xen/arch/riscv/time.c
@@ -40,7 +40,7 @@ static void __init preinit_dt_xen_time(void)
if ( !dt_property_read_u32(timer, "timebase-frequency", &rate) )
panic("Unable to find clock frequency\n");
- cpu_khz = rate / 1000;
+ cpu_khz = DIV_ROUND(rate, 1000);
}
int reprogram_timer(s_time_t timeout)
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 244277c0a9..008d9e97d9 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -2642,7 +2642,7 @@ void __init early_time_init(void)
set_time_scale(&t->tsc_scale, tmp);
t->stamp.local_tsc = boot_tsc_stamp;
- cpu_khz = tmp / 1000;
+ cpu_khz = DIV_ROUND(tmp, 1000);
printk("Detected %lu.%03lu MHz processor.\n",
cpu_khz / 1000, cpu_khz % 1000);
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |