[libvirt] [PATCH v3 5/5] util: Don't report CPU frequency for ARM hosts
John Ferlan
jferlan at redhat.com
Fri Jan 5 20:52:20 UTC 2018
On 12/14/2017 07:34 AM, Andrea Bolognani wrote:
> 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".
>
> Signed-off-by: Andrea Bolognani <abologna at redhat.com>
> ---
> src/util/virhostcpu.c | 6 ++++--
> tests/virhostcpudata/linux-aarch64-rhel74-moonshot.expected | 2 +-
> tests/virhostcpudata/linux-armv6l-raspberrypi.expected | 2 +-
> 3 files changed, 6 insertions(+), 4 deletions(-)
>
Suggestion - follow cmdNodeinfo for virhostcputest.c and don't print the
MHz if it's 0. It's the indication that the data wasn't obtainable. I
think printing 0 is perhaps just as bad as printing the erroneous 100.
I trust you can make the adjustment without another round of patches.
Reviewed-by: John Ferlan <jferlan at redhat.com>
John
> diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
> index 9c9f362de..1c9ee5921 100644
> --- a/src/util/virhostcpu.c
> +++ b/src/util/virhostcpu.c
> @@ -590,12 +590,14 @@ virHostCPUParseFrequency(FILE *cpuinfo,
> const char *prefix = NULL;
> char line[1024];
>
> + /* No sensible way to retrieve CPU frequency */
> + if (ARCH_IS_ARM(arch))
> + return 0;
> +
> if (ARCH_IS_X86(arch))
> prefix = "cpu MHz";
> else if (ARCH_IS_PPC(arch))
> prefix = "clock";
> - else if (ARCH_IS_ARM(arch))
> - prefix = "BogoMIPS";
>
> if (!prefix) {
> VIR_WARN("%s is not supported by the %s parser",
> diff --git a/tests/virhostcpudata/linux-aarch64-rhel74-moonshot.expected b/tests/virhostcpudata/linux-aarch64-rhel74-moonshot.expected
> index 24ff0ea0b..6776aa6c2 100644
> --- a/tests/virhostcpudata/linux-aarch64-rhel74-moonshot.expected
> +++ b/tests/virhostcpudata/linux-aarch64-rhel74-moonshot.expected
> @@ -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
> diff --git a/tests/virhostcpudata/linux-armv6l-raspberrypi.expected b/tests/virhostcpudata/linux-armv6l-raspberrypi.expected
> index 146bd073e..1c4c713d5 100644
> --- a/tests/virhostcpudata/linux-armv6l-raspberrypi.expected
> +++ b/tests/virhostcpudata/linux-armv6l-raspberrypi.expected
> @@ -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
>
More information about the libvir-list
mailing list