Re: [PATCH v3 6/7] lib/group_cpus: drop unneeded cpumask_empty() call in __group_cpus_evenly()

Ming Lei
2023-12-13T00:59:56Z

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