vppinfra: fix cpu freq init error if cpu support aperfmperf
After linux-v4.15, 'cpu MHz' in /proc/cpuinfo is CPU
real frequency on x86 if cpu support aperfmperf flags
more see linux commit:
https://github.com/torvalds/linux/commit/7d5905dc14a87805a59f3c5bf70173aac2bb18f8
Type: fix
Change-Id: Ib655a9a1c519104142120b343cd8ddbe0b6e50e6
Signed-off-by: Xiaoming Jiang <jiangxiaoming@outlook.com>
diff --git a/src/vppinfra/cpu.h b/src/vppinfra/cpu.h
index 7a1b75f..b3743d4 100644
--- a/src/vppinfra/cpu.h
+++ b/src/vppinfra/cpu.h
@@ -150,6 +150,7 @@
_ (movdir64b, 7, ecx, 28) \
_ (enqcmd, 7, ecx, 29) \
_ (avx512_fp16, 7, edx, 23) \
+ _ (aperfmperf, 0x00000006, ecx, 0) \
_ (invariant_tsc, 0x80000007, edx, 8) \
_ (monitorx, 0x80000001, ecx, 29)
diff --git a/src/vppinfra/time.c b/src/vppinfra/time.c
index 5a6aaf1..f173649 100644
--- a/src/vppinfra/time.c
+++ b/src/vppinfra/time.c
@@ -76,8 +76,11 @@
f64 ppc_timebase = 0; /* warnings be gone */
unformat_input_t input;
-/* $$$$ aarch64 kernel doesn't report "cpu MHz" */
-#if defined(__aarch64__)
+#if defined(__x86_64__)
+ if (clib_cpu_supports_aperfmperf ())
+ return 0.0;
+#elif defined(__aarch64__)
+ /* $$$$ aarch64 kernel doesn't report "cpu MHz" */
return 0.0;
#endif