|
28 | 28 | static DEFINE_PER_CPU(struct scale_freq_data __rcu *, sft_data);
|
29 | 29 | static struct cpumask scale_freq_counters_mask;
|
30 | 30 | static bool scale_freq_invariant;
|
31 |
| -DEFINE_PER_CPU(unsigned long, capacity_freq_ref) = 1; |
| 31 | +DEFINE_PER_CPU(unsigned long, capacity_freq_ref) = 0; |
32 | 32 | EXPORT_PER_CPU_SYMBOL_GPL(capacity_freq_ref);
|
33 | 33 |
|
34 | 34 | static bool supports_scale_freq_counters(const struct cpumask *cpus)
|
@@ -293,13 +293,15 @@ void topology_normalize_cpu_scale(void)
|
293 | 293 |
|
294 | 294 | capacity_scale = 1;
|
295 | 295 | for_each_possible_cpu(cpu) {
|
296 |
| - capacity = raw_capacity[cpu] * per_cpu(capacity_freq_ref, cpu); |
| 296 | + capacity = raw_capacity[cpu] * |
| 297 | + (per_cpu(capacity_freq_ref, cpu) ?: 1); |
297 | 298 | capacity_scale = max(capacity, capacity_scale);
|
298 | 299 | }
|
299 | 300 |
|
300 | 301 | pr_debug("cpu_capacity: capacity_scale=%llu\n", capacity_scale);
|
301 | 302 | for_each_possible_cpu(cpu) {
|
302 |
| - capacity = raw_capacity[cpu] * per_cpu(capacity_freq_ref, cpu); |
| 303 | + capacity = raw_capacity[cpu] * |
| 304 | + (per_cpu(capacity_freq_ref, cpu) ?: 1); |
303 | 305 | capacity = div64_u64(capacity << SCHED_CAPACITY_SHIFT,
|
304 | 306 | capacity_scale);
|
305 | 307 | topology_set_cpu_scale(cpu, capacity);
|
|
0 commit comments