On 31.08.2016 07:14, Roman Bogorodskiy wrote: > Current implementation uses the dev.cpu.0.freq sysctl that is > provided by the cpufreq(4) framework and returns the actual > CPU frequency. However, there are environment where it's not available, > e.g. when running nested in KVM. In this case fall back to hw.clockrate > that reports CPU frequency at the boot time. > > Resolves (hopefully): > https://bugzilla.redhat.com/show_bug.cgi?id=1369964 > --- > src/util/virhostcpu.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c > index 0f03ff8..b5a37a8 100644 > --- a/src/util/virhostcpu.c > +++ b/src/util/virhostcpu.c > @@ -994,9 +994,16 @@ virHostCPUGetInfo(virArch hostarch ATTRIBUTE_UNUSED, > *threads = 1; > > # ifdef __FreeBSD__ > + /* dev.cpu.%d.freq reports current active CPU frequency. It is provided by > + * the cpufreq(4) framework. However, it might be disabled or no driver > + * available. In this case fallback to "hw.clockrate" which reports boot time > + * CPU frequency. */ > + > if (sysctlbyname("dev.cpu.0.freq", &cpu_freq, &cpu_freq_len, NULL, 0) < 0) { > - virReportSystemError(errno, "%s", _("cannot obtain CPU freq")); > - return -1; > + if (sysctlbyname("hw.clockrate", &cpu_freq, &cpu_freq_len, NULL, 0) < 0) { > + virReportSystemError(errno, "%s", _("cannot obtain CPU freq")); > + return -1; > + } > } > > *mhz = cpu_freq; > ACK Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list