diff options
Diffstat (limited to 'drivers/cpufreq/cpufreq_stats.c')
| -rw-r--r-- | drivers/cpufreq/cpufreq_stats.c | 24 | 
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c index ae70d63a8b2..c0ff97d375d 100644 --- a/drivers/cpufreq/cpufreq_stats.c +++ b/drivers/cpufreq/cpufreq_stats.c @@ -43,7 +43,7 @@ struct cpufreq_stats {  #endif  }; -static struct cpufreq_stats *cpufreq_stats_table[NR_CPUS]; +static DEFINE_PER_CPU(struct cpufreq_stats *, cpufreq_stats_table);  struct cpufreq_stats_attribute {  	struct attribute attr; @@ -58,7 +58,7 @@ cpufreq_stats_update (unsigned int cpu)  	cur_time = get_jiffies_64();  	spin_lock(&cpufreq_stats_lock); -	stat = cpufreq_stats_table[cpu]; +	stat = per_cpu(cpufreq_stats_table, cpu);  	if (stat->time_in_state)  		stat->time_in_state[stat->last_index] =  			cputime64_add(stat->time_in_state[stat->last_index], @@ -71,11 +71,11 @@ cpufreq_stats_update (unsigned int cpu)  static ssize_t  show_total_trans(struct cpufreq_policy *policy, char *buf)  { -	struct cpufreq_stats *stat = cpufreq_stats_table[policy->cpu]; +	struct cpufreq_stats *stat = per_cpu(cpufreq_stats_table, policy->cpu);  	if (!stat)  		return 0;  	return sprintf(buf, "%d\n", -			cpufreq_stats_table[stat->cpu]->total_trans); +			per_cpu(cpufreq_stats_table, stat->cpu)->total_trans);  }  static ssize_t @@ -83,7 +83,7 @@ show_time_in_state(struct cpufreq_policy *policy, char *buf)  {  	ssize_t len = 0;  	int i; -	struct cpufreq_stats *stat = cpufreq_stats_table[policy->cpu]; +	struct cpufreq_stats *stat = per_cpu(cpufreq_stats_table, policy->cpu);  	if (!stat)  		return 0;  	cpufreq_stats_update(stat->cpu); @@ -101,7 +101,7 @@ show_trans_table(struct cpufreq_policy *policy, char *buf)  	ssize_t len = 0;  	int i, j; -	struct cpufreq_stats *stat = cpufreq_stats_table[policy->cpu]; +	struct cpufreq_stats *stat = per_cpu(cpufreq_stats_table, policy->cpu);  	if (!stat)  		return 0;  	cpufreq_stats_update(stat->cpu); @@ -170,7 +170,7 @@ freq_table_get_index(struct cpufreq_stats *stat, unsigned int freq)  static void cpufreq_stats_free_table(unsigned int cpu)  { -	struct cpufreq_stats *stat = cpufreq_stats_table[cpu]; +	struct cpufreq_stats *stat = per_cpu(cpufreq_stats_table, cpu);  	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);  	if (policy && policy->cpu == cpu)  		sysfs_remove_group(&policy->kobj, &stats_attr_group); @@ -178,7 +178,7 @@ static void cpufreq_stats_free_table(unsigned int cpu)  		kfree(stat->time_in_state);  		kfree(stat);  	} -	cpufreq_stats_table[cpu] = NULL; +	per_cpu(cpufreq_stats_table, cpu) = NULL;  	if (policy)  		cpufreq_cpu_put(policy);  } @@ -192,7 +192,7 @@ cpufreq_stats_create_table (struct cpufreq_policy *policy,  	struct cpufreq_policy *data;  	unsigned int alloc_size;  	unsigned int cpu = policy->cpu; -	if (cpufreq_stats_table[cpu]) +	if (per_cpu(cpufreq_stats_table, cpu))  		return -EBUSY;  	if ((stat = kzalloc(sizeof(struct cpufreq_stats), GFP_KERNEL)) == NULL)  		return -ENOMEM; @@ -207,7 +207,7 @@ cpufreq_stats_create_table (struct cpufreq_policy *policy,  		goto error_out;  	stat->cpu = cpu; -	cpufreq_stats_table[cpu] = stat; +	per_cpu(cpufreq_stats_table, cpu) = stat;  	for (i=0; table[i].frequency != CPUFREQ_TABLE_END; i++) {  		unsigned int freq = table[i].frequency; @@ -251,7 +251,7 @@ error_out:  	cpufreq_cpu_put(data);  error_get_fail:  	kfree(stat); -	cpufreq_stats_table[cpu] = NULL; +	per_cpu(cpufreq_stats_table, cpu) = NULL;  	return ret;  } @@ -284,7 +284,7 @@ cpufreq_stat_notifier_trans (struct notifier_block *nb, unsigned long val,  	if (val != CPUFREQ_POSTCHANGE)  		return 0; -	stat = cpufreq_stats_table[freq->cpu]; +	stat = per_cpu(cpufreq_stats_table, freq->cpu);  	if (!stat)  		return 0;  |