cpufreq-info and acpi-cpufreq: reporting MSR_IA32_PERF_CTL as "actual frequency"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
I was analyzing the code and behaviour of cpufrequtils (kernel 3.13).
I noticed that the value reported by cpufreq-info as the frequency
"asserted by call to hardware" (exported to sysfs as
"cpuinfo_cur_freq") is always the same as the value reported as the
frequency requested by a governor (exported to sysfs as "freq", stored
in policy->cur).
It was not the case for kernel 3.2 (these two values tend to differ).

I found a reason: while using acpi-cpufreq driver, the value reported
as hardware frequency is retrieved using  get_cur_freq_on_cpu function
(defined in acpi-cpufreq). Now, in kernel version 3.2 this function
reads a value from MSR_IA32_PERF_STATUS, while in kernel 3.13 it reads
MSR_IA32_PERF_CTL.
It is a result of the patch shown below:
https://lists.ubuntu.com/archives/kernel-team/2013-June/029493.html

It looks like a bug for me - we take a requested frequency (control
register) and we report it as "cpuinfo_cur_freq - Current frequency of
the CPU as obtained from the hardware, in KHz. This is the frequency
the CPU actually runs at." (as desribed in cpufrequtils documentation:
https://www.kernel.org/doc/Documentation/cpu-freq/user-guide.txt";. I
believe we should read status register (MSR_IA32_PERF_STATUS) instead.

Best regards,
Magdalena Dobosz
--
To unsubscribe from this list: send the line "unsubscribe cpufreq" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Devel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Forum]     [Linux SCSI]

  Powered by Linux