lkml.org 
[lkml]   [2022]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 22/54] rcu: replace cpumask_weight with cpumask_empty where appropriate
    Date
    In some places, RCU code calls cpumask_weight() to check if any bit of a
    given cpumask is set. We can do it more efficiently with cpumask_empty()
    because cpumask_empty() stops traversing the cpumask as soon as it finds
    first set bit, while cpumask_weight() counts all bits unconditionally.

    Signed-off-by: Yury Norov <yury.norov@gmail.com>
    ---
    kernel/rcu/tree_nocb.h | 4 ++--
    kernel/rcu/tree_plugin.h | 2 +-
    2 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h
    index eeafb546a7a0..f83c7b1d6110 100644
    --- a/kernel/rcu/tree_nocb.h
    +++ b/kernel/rcu/tree_nocb.h
    @@ -1169,7 +1169,7 @@ void __init rcu_init_nohz(void)
    struct rcu_data *rdp;

    #if defined(CONFIG_NO_HZ_FULL)
    - if (tick_nohz_full_running && cpumask_weight(tick_nohz_full_mask))
    + if (tick_nohz_full_running && !cpumask_empty(tick_nohz_full_mask))
    need_rcu_nocb_mask = true;
    #endif /* #if defined(CONFIG_NO_HZ_FULL) */

    @@ -1348,7 +1348,7 @@ static void __init rcu_organize_nocb_kthreads(void)
    */
    void rcu_bind_current_to_nocb(void)
    {
    - if (cpumask_available(rcu_nocb_mask) && cpumask_weight(rcu_nocb_mask))
    + if (cpumask_available(rcu_nocb_mask) && !cpumask_empty(rcu_nocb_mask))
    WARN_ON(sched_setaffinity(current->pid, rcu_nocb_mask));
    }
    EXPORT_SYMBOL_GPL(rcu_bind_current_to_nocb);
    diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
    index c5b45c2f68a1..0dc0c8d6717c 100644
    --- a/kernel/rcu/tree_plugin.h
    +++ b/kernel/rcu/tree_plugin.h
    @@ -1215,7 +1215,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
    cpu != outgoingcpu)
    cpumask_set_cpu(cpu, cm);
    cpumask_and(cm, cm, housekeeping_cpumask(HK_FLAG_RCU));
    - if (cpumask_weight(cm) == 0)
    + if (cpumask_empty(cm))
    cpumask_copy(cm, housekeeping_cpumask(HK_FLAG_RCU));
    set_cpus_allowed_ptr(t, cm);
    free_cpumask_var(cm);
    --
    2.30.2
    \
     
     \ /
      Last update: 2022-01-23 19:42    [W:4.021 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site