From eb67732db1616c920ad31cb65328717bbf33eb74 Mon Sep 17 00:00:00 2001 From: Andres Oportus <andresoportus@google.com> Date: Thu, 11 May 2017 08:57:39 -0700 Subject: [PATCH] ANDROID: Fix cpufreq stats table creation cpufreq stats does not correctly supports multiple cpus per profile. For instance Marlin/Sailfish per cpu stats struct does not get created for all cpus (only one per policy). This change does not provide full support for multiple cpus per profile but allows stats creation per cpu to allow b/34133340 to be completed. Bug: 38244231 Bug: 34133340 Test: Boot Sailfish Signed-off-by: Andres Oportus <andresoportus@google.com> Change-Id: I72ea548a199f57ed841618b08b9c41e99b493376 Conflicts: drivers/cpufreq/cpufreq_stats.c Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com> --- drivers/cpufreq/cpufreq_stats.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c index 154133cb497..68ea9aeac77 100644 --- a/drivers/cpufreq/cpufreq_stats.c +++ b/drivers/cpufreq/cpufreq_stats.c @@ -620,13 +620,12 @@ static void cpufreq_powerstats_free(void) } static int cpufreq_stats_create_table(struct cpufreq_policy *policy, - struct cpufreq_frequency_table *table, int count) + int cpu, struct cpufreq_frequency_table *table, int count) { unsigned int i, j, ret = 0; struct cpufreq_stats *stat; struct cpufreq_policy *data; unsigned int alloc_size; - unsigned int cpu = policy->cpu; struct cpufreq_stats *prev_stat = per_cpu(prev_cpufreq_stats_table, cpu); if (per_cpu(cpufreq_stats_table, cpu)) @@ -645,8 +644,6 @@ static int cpufreq_stats_create_table(struct cpufreq_policy *policy, } ret = sysfs_create_group(&data->kobj, &stats_attr_group); - if (ret) - goto error_out; stat->cpu = cpu; per_cpu(cpufreq_stats_table, cpu) = stat; @@ -901,7 +898,7 @@ static int cpufreq_stat_notifier_policy(struct notifier_block *nb, if (!per_cpu(cpufreq_power_stats, cpu)) cpufreq_powerstats_create(cpu, table, count); - ret = cpufreq_stats_create_table(policy, table, count); + ret = cpufreq_stats_create_table(policy, cpu, table, count); if (ret) return ret; return 0; @@ -1045,7 +1042,7 @@ static int cpufreq_stats_create_table_cpu(unsigned int cpu) if (!per_cpu(cpufreq_power_stats, cpu)) cpufreq_powerstats_create(cpu, table, count); - ret = cpufreq_stats_create_table(policy, table, count); + ret = cpufreq_stats_create_table(policy, cpu, table, count); out: cpufreq_cpu_put(policy); -- 2.20.1