aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2009-12-02 15:10:14 -0500
committerIngo Molnar <mingo@elte.hu>2009-12-03 05:34:53 -0500
commitcf244dc01bf68e1ad338b82447f8686d24ea4435 (patch)
treedc2aebb60ef1eddf92d7e23b72ec2f6c08797684 /kernel/rcutree.c
parentd3f6bad3911736e44ba11f3f3f6ac4e8c837fdfc (diff)
rcu: Enable fourth level of TREE_RCU hierarchy
Enable a fourth level of rcu_node hierarchy for TREE_RCU and TREE_PREEMPT_RCU. This is for stress-testing and experiemental purposes only, although in theory this would enable 16,777,216 CPUs on 64-bit systems, though only 1,048,576 CPUs on 32-bit systems. Normal experimental use of this fourth level will normally set CONFIG_RCU_FANOUT=2, requiring a 16-CPU system, though the more adventurous (and more fortunate) experimenters may wish to chose CONFIG_RCU_FANOUT=3 for 81-CPU systems or even CONFIG_RCU_FANOUT=4 for 256-CPU systems. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Josh Triplett <josh@joshtriplett.org> Acked-by: Lai Jiangshan <laijs@cn.fujitsu.com> Cc: dipankar@in.ibm.com Cc: mathieu.desnoyers@polymtl.ca Cc: dvhltc@us.ibm.com Cc: niv@us.ibm.com Cc: peterz@infradead.org Cc: rostedt@goodmis.org Cc: Valdis.Kletnieks@vt.edu Cc: dhowells@redhat.com LKML-Reference: <12597846161257-git-send-email-> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r--kernel/rcutree.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index a9f51031d3e8..d47e03e5792a 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -60,7 +60,8 @@ static struct lock_class_key rcu_node_class[NUM_RCU_LVLS];
60 NUM_RCU_LVL_0, /* root of hierarchy. */ \ 60 NUM_RCU_LVL_0, /* root of hierarchy. */ \
61 NUM_RCU_LVL_1, \ 61 NUM_RCU_LVL_1, \
62 NUM_RCU_LVL_2, \ 62 NUM_RCU_LVL_2, \
63 NUM_RCU_LVL_3, /* == MAX_RCU_LVLS */ \ 63 NUM_RCU_LVL_3, \
64 NUM_RCU_LVL_4, /* == MAX_RCU_LVLS */ \
64 }, \ 65 }, \
65 .signaled = RCU_GP_IDLE, \ 66 .signaled = RCU_GP_IDLE, \
66 .gpnum = -300, \ 67 .gpnum = -300, \
@@ -1877,6 +1878,9 @@ void __init rcu_init(void)
1877#ifdef CONFIG_RCU_CPU_STALL_DETECTOR 1878#ifdef CONFIG_RCU_CPU_STALL_DETECTOR
1878 printk(KERN_INFO "RCU-based detection of stalled CPUs is enabled.\n"); 1879 printk(KERN_INFO "RCU-based detection of stalled CPUs is enabled.\n");
1879#endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */ 1880#endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */
1881#if NUM_RCU_LVL_4 != 0
1882 printk(KERN_INFO "Experimental four-level hierarchy is enabled.\n");
1883#endif /* #if NUM_RCU_LVL_4 != 0 */
1880 RCU_INIT_FLAVOR(&rcu_sched_state, rcu_sched_data); 1884 RCU_INIT_FLAVOR(&rcu_sched_state, rcu_sched_data);
1881 RCU_INIT_FLAVOR(&rcu_bh_state, rcu_bh_data); 1885 RCU_INIT_FLAVOR(&rcu_bh_state, rcu_bh_data);
1882 __rcu_init_preempt(); 1886 __rcu_init_preempt();