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
0ba0ce3cbb
commit
09116eeea6
@ -304,6 +304,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);
|
||||
@ -2916,8 +2920,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)
|
||||
{
|
||||
@ -2941,17 +2943,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) {
|
||||
@ -4907,10 +4906,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…
x
Reference in New Issue
Block a user