Commit 26845c2860cebebe6ce2d9d01ae3cb3db84b7e29

Authored by Paul E. McKenney
1 parent c68de2097a

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>

Showing 2 changed files with 42 additions and 8 deletions Side-by-side Diff

... ... @@ -1938,12 +1938,6 @@
1938 1938 int cpu;
1939 1939  
1940 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 1941 RCU_INIT_FLAVOR(&rcu_sched_state, rcu_sched_data);
1948 1942 RCU_INIT_FLAVOR(&rcu_bh_state, rcu_bh_data);
1949 1943 __rcu_init_preempt();
kernel/rcutree_plugin.h
... ... @@ -26,6 +26,45 @@
26 26  
27 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 + */
  34 +static 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 68 #ifdef CONFIG_TREE_PREEMPT_RCU
30 69  
31 70 struct rcu_state rcu_preempt_state = RCU_STATE_INITIALIZER(rcu_preempt_state);
... ... @@ -38,8 +77,8 @@
38 77 */
39 78 static void __init rcu_bootup_announce(void)
40 79 {
41   - printk(KERN_INFO
42   - "Experimental preemptable hierarchical RCU implementation.\n");
  80 + printk(KERN_INFO "Preemptable hierarchical RCU implementation.\n");
  81 + rcu_bootup_announce_oddness();
43 82 }
44 83  
45 84 /*
... ... @@ -757,6 +796,7 @@
757 796 static void __init rcu_bootup_announce(void)
758 797 {
759 798 printk(KERN_INFO "Hierarchical RCU implementation.\n");
  799 + rcu_bootup_announce_oddness();
760 800 }
761 801  
762 802 /*