rcu: permit discontiguous cpu_possible_mask CPU numbering
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 14 Apr 2010 23:48:11 +0000 (16:48 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 10 May 2010 18:08:35 +0000 (11:08 -0700)
TREE_RCU assumes that CPU numbering is contiguous, but some users need
large holes in the numbering to better map to hardware layout.  This patch
makes TREE_RCU (and TREE_PREEMPT_RCU) tolerate large holes in the CPU
numbering.  However, NR_CPUS must still be greater than the largest
CPU number.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcutree.c

index f391886..c60fd74 100644 (file)
@@ -1913,7 +1913,7 @@ static void __init rcu_init_one(struct rcu_state *rsp)
 
        rnp = rsp->level[NUM_RCU_LVLS - 1];
        for_each_possible_cpu(i) {
-               if (i > rnp->grphi)
+               while (i > rnp->grphi)
                        rnp++;
                rsp->rda[i]->mynode = rnp;
                rcu_boot_init_percpu_data(i, rsp);