Messages in this thread | | | Date | Wed, 13 Dec 2023 08:59:42 +0800 | From | Ming Lei <> | Subject | Re: [PATCH v3 6/7] lib/group_cpus: drop unneeded cpumask_empty() call in __group_cpus_evenly() |
| |
On Mon, Dec 11, 2023 at 08:21:06PM -0800, Yury Norov wrote: > The function is called twice. First time it's called with > cpumask_present as a parameter, which can't be empty. Second time it's > called with a mask created with cpumask_andnot(), which returns false if > the result is an empty mask. > > We can safely drop redundand cpumask_empty() call from the > __group_cpus_evenly() and save few cycles. > > Signed-off-by: Yury Norov <yury.norov@gmail.com> > --- > lib/group_cpus.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/lib/group_cpus.c b/lib/group_cpus.c > index c7fcd04c87bf..664a56171a1b 100644 > --- a/lib/group_cpus.c > +++ b/lib/group_cpus.c > @@ -252,9 +252,6 @@ static int __group_cpus_evenly(unsigned int startgrp, unsigned int numgrps, > nodemask_t nodemsk = NODE_MASK_NONE; > struct node_groups *node_groups; > > - if (cpumask_empty(cpu_mask)) > - return 0; > - > nodes = get_nodes_in_cpumask(node_to_cpumask, cpu_mask, &nodemsk); > > /* > @@ -394,9 +391,14 @@ struct cpumask *group_cpus_evenly(unsigned int numgrps) > curgrp = 0; > else > curgrp = nr_present; > - cpumask_andnot(npresmsk, cpu_possible_mask, npresmsk); > - ret = __group_cpus_evenly(curgrp, numgrps, node_to_cpumask, > - npresmsk, nmsk, masks); > + > + if (cpumask_andnot(npresmsk, cpu_possible_mask, npresmsk)) > + /* If npresmsk is not empty */ > + ret = __group_cpus_evenly(curgrp, numgrps, node_to_cpumask, > + npresmsk, nmsk, masks); > + else > + ret = 0; > + > if (ret >= 0) > nr_others = ret;
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Thanks, Ming
| |