util: Don't report CPU frequency for ARM hosts

Some ARM platforms, such as the original Raspberry Pi, report the
CPU frequency in the BogoMIPS field of /proc/cpuinfo, so libvirt
parsed that field and returned it through its API.

However, not only many more boards don't report any value there,
but several - including ARMv8-based server hardware, and even the
more recent Raspberry Pi 3 - use this field as originally intended:
to report the BogoMIPS value instead of the CPU frequency.

Since we have no way of detecting how the field is being used,
it's better to report no information at all rather than something
ludicrous like "your shiny 96-core aarch64 virtualization host's
CPUs are running at a whopping 100 MHz".

Partially-resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1206353

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
Andrea Bolognani 2017-12-11 16:09:20 +01:00
parent 6512b0ddc1
commit a63ea8141b
3 changed files with 6 additions and 4 deletions

View File

@ -592,12 +592,14 @@ virHostCPUParseFrequency(FILE *cpuinfo,
const char *prefix = NULL; const char *prefix = NULL;
char line[1024]; char line[1024];
/* No sensible way to retrieve CPU frequency */
if (ARCH_IS_ARM(arch))
return 0;
if (ARCH_IS_X86(arch)) if (ARCH_IS_X86(arch))
prefix = "cpu MHz"; prefix = "cpu MHz";
else if (ARCH_IS_PPC(arch)) else if (ARCH_IS_PPC(arch))
prefix = "clock"; prefix = "clock";
else if (ARCH_IS_ARM(arch))
prefix = "BogoMIPS";
if (!prefix) { if (!prefix) {
VIR_WARN("%s is not supported by the %s parser", VIR_WARN("%s is not supported by the %s parser",

View File

@ -1 +1 @@
CPUs: 8/8, MHz: 100, Nodes: 1, Sockets: 1, Cores: 8, Threads: 1 CPUs: 8/8, MHz: 0, Nodes: 1, Sockets: 1, Cores: 8, Threads: 1

View File

@ -1 +1 @@
CPUs: 1/1, MHz: 697, Nodes: 1, Sockets: 1, Cores: 1, Threads: 1 CPUs: 1/1, MHz: 0, Nodes: 1, Sockets: 1, Cores: 1, Threads: 1