From c0e939b34cef55fe8a99e1d26eb9010b735559c8 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Sat, 12 Nov 2016 11:50:01 +0100 Subject: vppinfra: fix TSC clock detection on newer intel CPUs Change-Id: Iff88c9a0dd1b7401605075221640b269bec12859 Signed-off-by: Damjan Marion --- vppinfra/vppinfra/cpu.h | 3 ++- vppinfra/vppinfra/time.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) 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 #include #include +#include #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) -- cgit 1.2.3-korg