mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02: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