diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2017-11-30 07:29:56 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2017-11-30 07:29:56 -0500 |
commit | 6981037442b05b192504fbc3c165cb240e01f6e2 (patch) | |
tree | 907d4e49cd65151292fd1950c4f298bf6c097cb2 | |
parent | 7e8a09e05a0f0ccaf6b2a16f12ed6edc8e62c47d (diff) | |
parent | 43d2d3b56d836945dde5ba5a2bfc98e5f700e768 (diff) |
Merge branch 'pm-tools'
* pm-tools:
cpupower : Fix cpupower working when cpu0 is offline
cpupowerutils: bench - Fix cpu online check
-rw-r--r-- | tools/power/cpupower/bench/system.c | 2 | ||||
-rw-r--r-- | tools/power/cpupower/utils/idle_monitor/cpuidle_sysfs.c | 9 |
2 files changed, 7 insertions, 4 deletions
diff --git a/tools/power/cpupower/bench/system.c b/tools/power/cpupower/bench/system.c index c25a74ae51ba..2bb3eef7d5c1 100644 --- a/tools/power/cpupower/bench/system.c +++ b/tools/power/cpupower/bench/system.c | |||
@@ -61,7 +61,7 @@ int set_cpufreq_governor(char *governor, unsigned int cpu) | |||
61 | 61 | ||
62 | dprintf("set %s as cpufreq governor\n", governor); | 62 | dprintf("set %s as cpufreq governor\n", governor); |
63 | 63 | ||
64 | if (cpupower_is_cpu_online(cpu) != 0) { | 64 | if (cpupower_is_cpu_online(cpu) != 1) { |
65 | perror("cpufreq_cpu_exists"); | 65 | perror("cpufreq_cpu_exists"); |
66 | fprintf(stderr, "error: cpu %u does not exist\n", cpu); | 66 | fprintf(stderr, "error: cpu %u does not exist\n", cpu); |
67 | return -1; | 67 | return -1; |
diff --git a/tools/power/cpupower/utils/idle_monitor/cpuidle_sysfs.c b/tools/power/cpupower/utils/idle_monitor/cpuidle_sysfs.c index 1b5da0066ebf..5b3205f16217 100644 --- a/tools/power/cpupower/utils/idle_monitor/cpuidle_sysfs.c +++ b/tools/power/cpupower/utils/idle_monitor/cpuidle_sysfs.c | |||
@@ -130,15 +130,18 @@ static struct cpuidle_monitor *cpuidle_register(void) | |||
130 | { | 130 | { |
131 | int num; | 131 | int num; |
132 | char *tmp; | 132 | char *tmp; |
133 | int this_cpu; | ||
134 | |||
135 | this_cpu = sched_getcpu(); | ||
133 | 136 | ||
134 | /* Assume idle state count is the same for all CPUs */ | 137 | /* Assume idle state count is the same for all CPUs */ |
135 | cpuidle_sysfs_monitor.hw_states_num = cpuidle_state_count(0); | 138 | cpuidle_sysfs_monitor.hw_states_num = cpuidle_state_count(this_cpu); |
136 | 139 | ||
137 | if (cpuidle_sysfs_monitor.hw_states_num <= 0) | 140 | if (cpuidle_sysfs_monitor.hw_states_num <= 0) |
138 | return NULL; | 141 | return NULL; |
139 | 142 | ||
140 | for (num = 0; num < cpuidle_sysfs_monitor.hw_states_num; num++) { | 143 | for (num = 0; num < cpuidle_sysfs_monitor.hw_states_num; num++) { |
141 | tmp = cpuidle_state_name(0, num); | 144 | tmp = cpuidle_state_name(this_cpu, num); |
142 | if (tmp == NULL) | 145 | if (tmp == NULL) |
143 | continue; | 146 | continue; |
144 | 147 | ||
@@ -146,7 +149,7 @@ static struct cpuidle_monitor *cpuidle_register(void) | |||
146 | strncpy(cpuidle_cstates[num].name, tmp, CSTATE_NAME_LEN - 1); | 149 | strncpy(cpuidle_cstates[num].name, tmp, CSTATE_NAME_LEN - 1); |
147 | free(tmp); | 150 | free(tmp); |
148 | 151 | ||
149 | tmp = cpuidle_state_desc(0, num); | 152 | tmp = cpuidle_state_desc(this_cpu, num); |
150 | if (tmp == NULL) | 153 | if (tmp == NULL) |
151 | continue; | 154 | continue; |
152 | strncpy(cpuidle_cstates[num].desc, tmp, CSTATE_DESC_LEN - 1); | 155 | strncpy(cpuidle_cstates[num].desc, tmp, CSTATE_DESC_LEN - 1); |