diff options
Diffstat (limited to 'vppinfra')
-rw-r--r-- | vppinfra/vppinfra/cpu.h | 3 | ||||
-rw-r--r-- | vppinfra/vppinfra/time.c | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/vppinfra/vppinfra/cpu.h b/vppinfra/vppinfra/cpu.h index a88eaa2d9ba..7d63f85b506 100644 --- a/vppinfra/vppinfra/cpu.h +++ b/vppinfra/vppinfra/cpu.h @@ -63,7 +63,8 @@ _ (avx, 1, ecx, 28) \ _ (avx2, 7, ebx, 5) \ _ (avx512f, 7, ebx, 16) \ _ (aes, 1, ecx, 25) \ -_ (sha, 7, ebx, 29) +_ (sha, 7, ebx, 29) \ +_ (invariant_tsc, 0x80000007, edx, 8) static inline int clib_get_cpuid (const u32 lev, u32 * eax, u32 * ebx, u32 * ecx, u32 * edx) diff --git a/vppinfra/vppinfra/time.c b/vppinfra/vppinfra/time.c index e62ee8636ac..2bdb9da4b39 100644 --- a/vppinfra/vppinfra/time.c +++ b/vppinfra/vppinfra/time.c @@ -38,6 +38,7 @@ #include <vppinfra/os.h> #include <vppinfra/time.h> #include <vppinfra/format.h> +#include <vppinfra/cpu.h> #ifdef CLIB_UNIX @@ -143,6 +144,9 @@ os_cpu_clock_frequency (void) { f64 cpu_freq; + if (clib_cpu_supports_invariant_tsc ()) + return estimate_clock_frequency (1e-3); + /* First try /sys version. */ cpu_freq = clock_frequency_from_sys_filesystem (); if (cpu_freq != 0) |