Messages in this thread | | | Date | Fri, 8 Dec 2023 09:31:27 +0800 | From | Ming Lei <> | Subject | Re: [PATCH v2 2/6] lib/group_cpus: relax atomicity requirement in grp_spread_init_one() |
| |
On Thu, Dec 07, 2023 at 12:38:56PM -0800, Yury Norov wrote: > Because nmsk and irqmsk are stable, extra atomicity is not required. > > Signed-off-by: Yury Norov <yury.norov@gmail.com> > --- > lib/group_cpus.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/lib/group_cpus.c b/lib/group_cpus.c > index ee272c4cefcc..8eb18c6bbf3b 100644 > --- a/lib/group_cpus.c > +++ b/lib/group_cpus.c > @@ -24,8 +24,8 @@ static void grp_spread_init_one(struct cpumask *irqmsk, struct cpumask *nmsk, > if (cpu >= nr_cpu_ids) > return; > > - cpumask_clear_cpu(cpu, nmsk); > - cpumask_set_cpu(cpu, irqmsk); > + __cpumask_clear_cpu(cpu, nmsk); > + __cpumask_set_cpu(cpu, irqmsk); > cpus_per_grp--; > > /* If the cpu has siblings, use them first */ > @@ -34,9 +34,8 @@ static void grp_spread_init_one(struct cpumask *irqmsk, struct cpumask *nmsk, > sibl = cpumask_next(sibl, siblmsk); > if (sibl >= nr_cpu_ids) > break; > - if (!cpumask_test_and_clear_cpu(sibl, nmsk)) > - continue; > - cpumask_set_cpu(sibl, irqmsk); > + __cpumask_clear_cpu(sibl, nmsk); > + __cpumask_set_cpu(sibl, irqmsk); > cpus_per_grp--;
Here the change isn't simply to remove atomicity, and the test part of cpumask_test_and_clear_cpu() is removed, so logic is changed, I feel the correct change should be:
if (cpumask_test_cpu(sibl, nmsk)) { __cpumask_clear_cpu(sibl, nmsk); __cpumask_set_cpu(sibl, irqmsk); cpus_per_grp--; }
Thanks, Ming
| |