mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
arm64: Utilize for_each_cpu_wrap for reference lookup
While searching for a reference CPU within a given policy,
arch_freq_get_on_cpu relies on cpumask_next_wrap to iterate over
all available CPUs and to ensure each is verified only once.
Recent changes to cpumask_next_wrap will handle the latter no more,
so switching to for_each_cpu_wrap, which preserves expected behavior
while ensuring compatibility with the updates.
Not to mention that when iterating over each CPU, using a dedicated
iterator is preferable to an open-coded loop.
Fixes: 16d1e27475 ("arm64: Provide an AMU-based version of arch_freq_get_on_cpu")
Signed-off-by: Beata Michalska <beata.michalska@arm.com>
Link: https://lore.kernel.org/r/20250220091015.2319901-1-beata.michalska@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
parent
39b1997498
commit
20711efa91
|
|
@ -254,7 +254,7 @@ int arch_freq_get_on_cpu(int cpu)
|
|||
if (!housekeeping_cpu(cpu, HK_TYPE_TICK) ||
|
||||
time_is_before_jiffies(last_update + msecs_to_jiffies(AMU_SAMPLE_EXP_MS))) {
|
||||
struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
|
||||
int ref_cpu = cpu;
|
||||
int ref_cpu;
|
||||
|
||||
if (!policy)
|
||||
return -EINVAL;
|
||||
|
|
@ -265,11 +265,15 @@ int arch_freq_get_on_cpu(int cpu)
|
|||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
do {
|
||||
ref_cpu = cpumask_next_wrap(ref_cpu, policy->cpus,
|
||||
start_cpu, true);
|
||||
|
||||
} while (ref_cpu < nr_cpu_ids && idle_cpu(ref_cpu));
|
||||
for_each_cpu_wrap(ref_cpu, policy->cpus, cpu + 1) {
|
||||
if (ref_cpu == start_cpu) {
|
||||
/* Prevent verifying same CPU twice */
|
||||
ref_cpu = nr_cpu_ids;
|
||||
break;
|
||||
}
|
||||
if (!idle_cpu(ref_cpu))
|
||||
break;
|
||||
}
|
||||
|
||||
cpufreq_cpu_put(policy);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user