On Tue, Feb 18, 2025 at 06:23:29PM +0000, Catalin Marinas wrote: > On Tue, Feb 18, 2025 at 09:16:34AM -0500, Yury Norov wrote: > > On Tue, Feb 18, 2025 at 02:10:25PM +0000, Catalin Marinas wrote: > > > Hi Stephen, > > > > > > On Wed, Feb 19, 2025 at 12:49:34AM +1100, Stephen Rothwell wrote: > > > > On Tue, 18 Feb 2025 11:35:02 +0100 Beata Michalska <beata.michalska@xxxxxxx> wrote: > > > > > I'm currently testing a proper fix for that one. > > > > > Should I just send it over as a diff to apply or rather a proper 'fixes' patch? > > > > > > > > Maybe a proper 'fixes' patch, please, if easy - otherwise a diff is > > > > fine. > > > > > > I just talked to Beata off-list. I think she'll try to use the current > > > for_each_cpu_wrap() API and avoid conflicts with the cpumask_next_wrap() > > > API change. > > > > Hi, > > > > Yes, for_each() loops are always preferable over opencoded iterating. > > Please feel free to CC me in case I can help. > > Beata is going to post the official fix but in the meantime, to avoid > breaking next, I'll add my temporary fix: > Just posted the fix [1]. Thank you all. --- [1] https://lore.kernel.org/linux-next/20250218192412.2072619-1-beata.michalska@xxxxxxx/T/#u --- BR Beata > --------8<-------------------------------- > From 1b12139107798128c183838c5f4a3f7ffcea1e44 Mon Sep 17 00:00:00 2001 > From: Catalin Marinas <catalin.marinas@xxxxxxx> > Date: Tue, 18 Feb 2025 18:20:46 +0000 > Subject: [PATCH] arm64: Do not use the deprecated cpumask_next_wrap() in > arch_freq_get_on_cpu() > > cpumask_next_wrap() will soon disappear in its current form. Use > for_each_cpu_wrap() instead. > > Fixes: 16d1e27475f6 ("arm64: Provide an AMU-based version of arch_freq_get_on_cpu") > Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxx> > --- > arch/arm64/kernel/topology.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c > index a09b0551ec59..1544d3648554 100644 > --- a/arch/arm64/kernel/topology.c > +++ b/arch/arm64/kernel/topology.c > @@ -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,10 @@ 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, start_cpu) { > + if (!idle_cpu(ref_cpu)) > + break; > + } > > cpufreq_cpu_put(policy); > >