OSDN Git Service

rcu: Allow for NULL tick_nohz_full_mask when nohz_full= missing
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 16 Jul 2014 14:37:06 +0000 (07:37 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 16 Jul 2014 17:44:46 +0000 (10:44 -0700)
commit187497fa5e9e9383820d33e48b87f8200a747c2a
tree7941e912b1a123cf2213797ca49a70bdfa550778
parent1823172ab582eb54456fd1354869bb850a1196ba
rcu: Allow for NULL tick_nohz_full_mask when nohz_full= missing

If there isn't a nohz_full= kernel parameter specified, then
tick_nohz_full_mask can legitimately be NULL.  This can cause
problems when RCU's boot code tries to cpumask_or() this value into
rcu_nocb_mask.  In addition, if NO_HZ_FULL_ALL=y, there is no point
in doing the cpumask_or() in the first place because this will cause
RCU_NOCB_CPU_ALL=y, which in turn will have all bits already set in
rcu_nocb_mask.

This commit therefore avoids the cpumask_or() if NO_HZ_FULL_ALL=y
and checks for !tick_nohz_full_running otherwise, this latter check
catching cases when there was no nohz_full= kernel parameter specified.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/tree_plugin.h