lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH 41/54] arch/x86: replace cpumask_weight with cpumask_weight_eq where appropriate
Date
Yury Norov <yury.norov@gmail.com> writes:

> smpboot code in somw places calls cpumask_weight() to compare the weight
> of cpumask with a given number. We can do it more efficiently with
> cpumask_weight_eq() because conditional cpumask_weight may stop traversing
> the cpumask earlier, as soon as condition is met.

I think this is misleading. cpumask_weight_eq() with any implementation
can only stop earlier if the condition is NOT met (when the number of
set bits is already higher than needed), to check for equality all bits
always need to be examined.

>
> Signed-off-by: Yury Norov <yury.norov@gmail.com>
> ---
> arch/x86/kernel/smpboot.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
> index 617012f4619f..e851e9945eb5 100644
> --- a/arch/x86/kernel/smpboot.c
> +++ b/arch/x86/kernel/smpboot.c
> @@ -1608,7 +1608,7 @@ static void remove_siblinginfo(int cpu)
> /*/
> * last thread sibling in this cpu core going down
> */
> - if (cpumask_weight(topology_sibling_cpumask(cpu)) == 1)
> + if (cpumask_weight_eq(topology_sibling_cpumask(cpu), 1))
> cpu_data(sibling).booted_cores--;
> }
>
> @@ -1617,7 +1617,7 @@ static void remove_siblinginfo(int cpu)
>
> for_each_cpu(sibling, topology_sibling_cpumask(cpu)) {
> cpumask_clear_cpu(cpu, topology_sibling_cpumask(sibling));
> - if (cpumask_weight(topology_sibling_cpumask(sibling)) == 1)
> + if (cpumask_weight_eq(topology_sibling_cpumask(sibling), 1))
> cpu_data(sibling).smt_active = false;
> }

--
Vitaly

\
 
 \ /
  Last update: 2022-01-24 10:16    [W:0.241 / U:0.256 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site