tools/power turbostat: Fix missing SYS_LPI counter on some Chromebooks
[ Upstream commit 1f81c5efc020314b2db30d77efe228b7e117750d ] Some Chromebook BIOS' do not export an ACPI LPIT, which is how Linux finds the residency counter for CPU and SYSTEM low power states, that is exports in /sys/devices/system/cpu/cpuidle/*residency_us When these sysfs attributes are missing, check the debugfs attrubte from the pmc_core driver, which accesses the same counter value. Signed-off-by: Len Brown <len.brown@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
97101ebd9c
commit
b3f9211797
1 changed files with 14 additions and 9 deletions
|
@ -299,6 +299,10 @@ int *irqs_per_cpu; /* indexed by cpu_num */
|
|||
|
||||
void setup_all_buffers(void);
|
||||
|
||||
char *sys_lpi_file;
|
||||
char *sys_lpi_file_sysfs = "/sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us";
|
||||
char *sys_lpi_file_debugfs = "/sys/kernel/debug/pmc_core/slp_s0_residency_usec";
|
||||
|
||||
int cpu_is_not_present(int cpu)
|
||||
{
|
||||
return !CPU_ISSET_S(cpu, cpu_present_setsize, cpu_present_set);
|
||||
|
@ -2844,8 +2848,6 @@ int snapshot_gfx_mhz(void)
|
|||
*
|
||||
* record snapshot of
|
||||
* /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us
|
||||
*
|
||||
* return 1 if config change requires a restart, else return 0
|
||||
*/
|
||||
int snapshot_cpu_lpi_us(void)
|
||||
{
|
||||
|
@ -2865,17 +2867,14 @@ int snapshot_cpu_lpi_us(void)
|
|||
/*
|
||||
* snapshot_sys_lpi()
|
||||
*
|
||||
* record snapshot of
|
||||
* /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us
|
||||
*
|
||||
* return 1 if config change requires a restart, else return 0
|
||||
* record snapshot of sys_lpi_file
|
||||
*/
|
||||
int snapshot_sys_lpi_us(void)
|
||||
{
|
||||
FILE *fp;
|
||||
int retval;
|
||||
|
||||
fp = fopen_or_die("/sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us", "r");
|
||||
fp = fopen_or_die(sys_lpi_file, "r");
|
||||
|
||||
retval = fscanf(fp, "%lld", &cpuidle_cur_sys_lpi_us);
|
||||
if (retval != 1)
|
||||
|
@ -4743,10 +4742,16 @@ void process_cpuid()
|
|||
else
|
||||
BIC_NOT_PRESENT(BIC_CPU_LPI);
|
||||
|
||||
if (!access("/sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us", R_OK))
|
||||
if (!access(sys_lpi_file_sysfs, R_OK)) {
|
||||
sys_lpi_file = sys_lpi_file_sysfs;
|
||||
BIC_PRESENT(BIC_SYS_LPI);
|
||||
else
|
||||
} else if (!access(sys_lpi_file_debugfs, R_OK)) {
|
||||
sys_lpi_file = sys_lpi_file_debugfs;
|
||||
BIC_PRESENT(BIC_SYS_LPI);
|
||||
} else {
|
||||
sys_lpi_file_sysfs = NULL;
|
||||
BIC_NOT_PRESENT(BIC_SYS_LPI);
|
||||
}
|
||||
|
||||
if (!quiet)
|
||||
decode_misc_feature_control();
|
||||
|
|
Loading…
Add table
Reference in a new issue