From: Yury Norov Date: Tue, 28 Jan 2025 16:46:33 +0000 (-0500) Subject: powerpc/xmon: simplify xmon_batch_next_cpu() X-Git-Tag: v6.15-rc1~222^2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=40ba13b430cb2202ce939a5cd7ff90b7d60aca7f;p=thirdparty%2Flinux.git powerpc/xmon: simplify xmon_batch_next_cpu() The function opencodes for_each_cpu_wrap() macro. As a loop termination condition it uses cpumask_empty(), which is O(N), and it makes the whole algorithm O(N^2). Switching to for_each_cpu_wrap() simplifies the logic, and makes the algorithm linear. Signed-off-by: Yury Norov --- diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index 268859e4df870..1acb53aab252d 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c @@ -1271,11 +1271,7 @@ static int xmon_batch_next_cpu(void) { unsigned long cpu; - while (!cpumask_empty(&xmon_batch_cpus)) { - cpu = cpumask_next_wrap(smp_processor_id(), &xmon_batch_cpus, - xmon_batch_start_cpu, true); - if (cpu >= nr_cpu_ids) - break; + for_each_cpu_wrap(cpu, &xmon_batch_cpus, xmon_batch_start_cpu) { if (xmon_batch_start_cpu == -1) xmon_batch_start_cpu = cpu; if (xmon_switch_cpu(cpu))