|
|
@@ -130,15 +130,18 @@ static struct cpuidle_monitor *cpuidle_register(void)
|
|
|
{
|
|
|
int num;
|
|
|
char *tmp;
|
|
|
+ int this_cpu;
|
|
|
+
|
|
|
+ this_cpu = sched_getcpu();
|
|
|
|
|
|
/* Assume idle state count is the same for all CPUs */
|
|
|
- cpuidle_sysfs_monitor.hw_states_num = cpuidle_state_count(0);
|
|
|
+ cpuidle_sysfs_monitor.hw_states_num = cpuidle_state_count(this_cpu);
|
|
|
|
|
|
if (cpuidle_sysfs_monitor.hw_states_num <= 0)
|
|
|
return NULL;
|
|
|
|
|
|
for (num = 0; num < cpuidle_sysfs_monitor.hw_states_num; num++) {
|
|
|
- tmp = cpuidle_state_name(0, num);
|
|
|
+ tmp = cpuidle_state_name(this_cpu, num);
|
|
|
if (tmp == NULL)
|
|
|
continue;
|
|
|
|
|
|
@@ -146,7 +149,7 @@ static struct cpuidle_monitor *cpuidle_register(void)
|
|
|
strncpy(cpuidle_cstates[num].name, tmp, CSTATE_NAME_LEN - 1);
|
|
|
free(tmp);
|
|
|
|
|
|
- tmp = cpuidle_state_desc(0, num);
|
|
|
+ tmp = cpuidle_state_desc(this_cpu, num);
|
|
|
if (tmp == NULL)
|
|
|
continue;
|
|
|
strncpy(cpuidle_cstates[num].desc, tmp, CSTATE_DESC_LEN - 1);
|