Re: [PATCHv2] rcu: tree: correctly handle sparse possible CPUs

From: Arnd Bergmann
Date: Wed May 18 2016 - 08:02:55 EST


On Tuesday 17 May 2016 17:12:51 Paul E. McKenney wrote:
> And some build errors:
>
> In file included from /home/paulmck/public_git/linux-rcu/kernel/rcu/tree.c:4209:0:
> /home/paulmck/public_git/linux-rcu/kernel/rcu/tree_plugin.h: In function ârcu_boost_kthread_setaffinityâ:
> /home/paulmck/public_git/linux-rcu/kernel/rcu/tree_plugin.h:1168:2: error: implicit declaration of function âfor_each_leaf_node_cpu_bitâ [-Werror=implicit-function-declaration]
> for_each_leaf_node_cpu_bit(rnp, cpu, bit)
> ^
> /home/paulmck/public_git/linux-rcu/kernel/rcu/tree_plugin.h:1169:3: error: expected â;â before âifâ
> if ((mask & bit) && cpu != outgoingcpu)
> ^
> /home/paulmck/public_git/linux-rcu/kernel/rcu/tree_plugin.h:1159:16: warning: unused variable âmaskâ [-Wunused-variable]
> unsigned long mask = rcu_rnp_online_cpus(rnp);
> ^
>
> Please see below for the .config.
>
> I have dropped the patch from my tree, looking forward to getting an
> update that fixes the build errors.
>

It's the missing "possible_" that Mark mentioned in his reply on Friday.

Please fold the fixup below into the patch if you want to get it to build.

Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx

diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index fd6b0f701bed..bb137b0ef6f3 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -1165,7 +1165,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)
return;
if (!zalloc_cpumask_var(&cm, GFP_KERNEL))
return;
- for_each_leaf_node_cpu_bit(rnp, cpu, bit)
+ for_each_leaf_node_possible_cpu_bit(rnp, cpu, bit)
if ((mask & bit) && cpu != outgoingcpu)
cpumask_set_cpu(cpu, cm);
if (cpumask_weight(cm) == 0)