mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-31 14:13:39 +00:00
tools/power turbostat: Check for non-zero value when MSR probing
For some MSRs, for example, the Platform Energy Counter (RAPL PSYS), it is required to additionally check for a non-zero value to confirm that it is present. From Intel SDM vol. 4: Platform Energy Counter (R/O) This MSR is valid only if both platform vendor hardware implementation and BIOS enablement support it. This MSR will read 0 if not valid. Signed-off-by: Patryk Wlazlyn <patryk.wlazlyn@linux.intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
1af5baeda5
commit
7c6fee25bd
@ -2113,13 +2113,17 @@ int get_msr(int cpu, off_t offset, unsigned long long *msr)
|
|||||||
int probe_msr(int cpu, off_t offset)
|
int probe_msr(int cpu, off_t offset)
|
||||||
{
|
{
|
||||||
ssize_t retval;
|
ssize_t retval;
|
||||||
unsigned long long dummy;
|
unsigned long long value;
|
||||||
|
|
||||||
assert(!no_msr);
|
assert(!no_msr);
|
||||||
|
|
||||||
retval = pread(get_msr_fd(cpu), &dummy, sizeof(dummy), offset);
|
retval = pread(get_msr_fd(cpu), &value, sizeof(value), offset);
|
||||||
|
|
||||||
if (retval != sizeof(dummy))
|
/*
|
||||||
|
* Expect MSRs to accumulate some non-zero value since the system was powered on.
|
||||||
|
* Treat zero as a read failure.
|
||||||
|
*/
|
||||||
|
if (retval != sizeof(value) || value == 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user