aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2010-04-13 17:19:23 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2010-05-10 14:08:34 -0400
commit26845c2860cebebe6ce2d9d01ae3cb3db84b7e29 (patch)
tree83849948ea7bffb5e87eecc17a7275e357740632
parentc68de2097a8799549a3c3bf27cbfeea24a604284 (diff)
rcu: print boot-time console messages if RCU configs out of ordinary
Print boot-time messages if tracing is enabled, if fanout is set to non-default values, if exact fanout is specified, if accelerated dyntick-idle grace periods have been enabled, if RCU-lockdep is enabled, if rcutorture has been boot-time enabled, if the CPU stall detector has been disabled, or if four-level hierarchy has been enabled. This is all for TREE_RCU and TREE_PREEMPT_RCU. TINY_RCU will be handled separately, if at all. Suggested-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-rw-r--r--kernel/rcutree.c6
-rw-r--r--kernel/rcutree_plugin.h44
2 files changed, 42 insertions, 8 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 595fb83e9b7d..ec6196fcd1fa 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1938,12 +1938,6 @@ void __init rcu_init(void)
1938 int cpu; 1938 int cpu;
1939 1939
1940 rcu_bootup_announce(); 1940 rcu_bootup_announce();
1941#ifdef CONFIG_RCU_CPU_STALL_DETECTOR
1942 printk(KERN_INFO "RCU-based detection of stalled CPUs is enabled.\n");
1943#endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */
1944#if NUM_RCU_LVL_4 != 0
1945 printk(KERN_INFO "Experimental four-level hierarchy is enabled.\n");
1946#endif /* #if NUM_RCU_LVL_4 != 0 */
1947 RCU_INIT_FLAVOR(&rcu_sched_state, rcu_sched_data); 1941 RCU_INIT_FLAVOR(&rcu_sched_state, rcu_sched_data);
1948 RCU_INIT_FLAVOR(&rcu_bh_state, rcu_bh_data); 1942 RCU_INIT_FLAVOR(&rcu_bh_state, rcu_bh_data);
1949 __rcu_init_preempt(); 1943 __rcu_init_preempt();
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index f9bc83a047da..0ae2339ab04d 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -26,6 +26,45 @@
26 26
27#include <linux/delay.h> 27#include <linux/delay.h>
28 28
29/*
30 * Check the RCU kernel configuration parameters and print informative
31 * messages about anything out of the ordinary. If you like #ifdef, you
32 * will love this function.
33 */
34static void __init rcu_bootup_announce_oddness(void)
35{
36#ifdef CONFIG_RCU_TRACE
37 printk(KERN_INFO "\tRCU debugfs-based tracing is enabled.\n");
38#endif
39#if (defined(CONFIG_64BIT) && CONFIG_RCU_FANOUT != 64) || (!defined(CONFIG_64BIT) && CONFIG_RCU_FANOUT != 32)
40 printk(KERN_INFO "\tCONFIG_RCU_FANOUT set to non-default value of %d\n",
41 CONFIG_RCU_FANOUT);
42#endif
43#ifdef CONFIG_RCU_FANOUT_EXACT
44 printk(KERN_INFO "\tHierarchical RCU autobalancing is disabled.\n");
45#endif
46#ifdef CONFIG_RCU_FAST_NO_HZ
47 printk(KERN_INFO
48 "\tRCU dyntick-idle grace-period acceleration is enabled.\n");
49#endif
50#ifdef CONFIG_PROVE_RCU
51 printk(KERN_INFO "\tRCU lockdep checking is enabled.\n");
52#endif
53#ifdef CONFIG_RCU_TORTURE_TEST_RUNNABLE
54 printk(KERN_INFO "\tRCU torture testing starts during boot.\n");
55#endif
56#ifndef CONFIG_RCU_CPU_STALL_DETECTOR
57 printk(KERN_INFO
58 "\tRCU-based detection of stalled CPUs is disabled.\n");
59#endif
60#ifndef CONFIG_RCU_CPU_STALL_VERBOSE
61 printk(KERN_INFO "\tVerbose stalled-CPUs detection is disabled.\n");
62#endif
63#if NUM_RCU_LVL_4 != 0
64 printk(KERN_INFO "\tExperimental four-level hierarchy is enabled.\n");
65#endif
66}
67
29#ifdef CONFIG_TREE_PREEMPT_RCU 68#ifdef CONFIG_TREE_PREEMPT_RCU
30 69
31struct rcu_state rcu_preempt_state = RCU_STATE_INITIALIZER(rcu_preempt_state); 70struct rcu_state rcu_preempt_state = RCU_STATE_INITIALIZER(rcu_preempt_state);
@@ -38,8 +77,8 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp);
38 */ 77 */
39static void __init rcu_bootup_announce(void) 78static void __init rcu_bootup_announce(void)
40{ 79{
41 printk(KERN_INFO 80 printk(KERN_INFO "Preemptable hierarchical RCU implementation.\n");
42 "Experimental preemptable hierarchical RCU implementation.\n"); 81 rcu_bootup_announce_oddness();
43} 82}
44 83
45/* 84/*
@@ -757,6 +796,7 @@ void exit_rcu(void)
757static void __init rcu_bootup_announce(void) 796static void __init rcu_bootup_announce(void)
758{ 797{
759 printk(KERN_INFO "Hierarchical RCU implementation.\n"); 798 printk(KERN_INFO "Hierarchical RCU implementation.\n");
799 rcu_bootup_announce_oddness();
760} 800}
761 801
762/* 802/*