|
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