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);