aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-12-25 03:31:28 -0500
committerIngo Molnar <mingo@elte.hu>2008-12-25 03:31:28 -0500
commit12d79bafb75639f406a9f71aab94808c414c836e (patch)
tree2d7ba81720be2ec8c897dd3ab6781cccd973249c
parent64db4cfff99c04cd5f550357edcc8780f96b54a2 (diff)
rcu: provide RCU options on non-preempt architectures too
Impact: build fix Some old architectures still do not use kernel/Kconfig.preempt, so the moving of the RCU options there broke their build: In file included from /home/mingo/tip/include/linux/sem.h:81, from /home/mingo/tip/include/linux/sched.h:69, from /home/mingo/tip/arch/alpha/kernel/asm-offsets.c:9: /home/mingo/tip/include/linux/rcupdate.h:62:2: error: #error "Unknown RCU implementation specified to kernel configuration" Move these options back to init/Kconfig, which every architecture includes. Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--init/Kconfig74
-rw-r--r--kernel/Kconfig.preempt75
2 files changed, 74 insertions, 75 deletions
diff --git a/init/Kconfig b/init/Kconfig
index 9dd7958a71f0..6b0fdedf3596 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -928,6 +928,80 @@ source "block/Kconfig"
928config PREEMPT_NOTIFIERS 928config PREEMPT_NOTIFIERS
929 bool 929 bool
930 930
931choice
932 prompt "RCU Implementation"
933 default CLASSIC_RCU
934
935config CLASSIC_RCU
936 bool "Classic RCU"
937 help
938 This option selects the classic RCU implementation that is
939 designed for best read-side performance on non-realtime
940 systems.
941
942 Select this option if you are unsure.
943
944config TREE_RCU
945 bool "Tree-based hierarchical RCU"
946 help
947 This option selects the RCU implementation that is
948 designed for very large SMP system with hundreds or
949 thousands of CPUs.
950
951config PREEMPT_RCU
952 bool "Preemptible RCU"
953 depends on PREEMPT
954 help
955 This option reduces the latency of the kernel by making certain
956 RCU sections preemptible. Normally RCU code is non-preemptible, if
957 this option is selected then read-only RCU sections become
958 preemptible. This helps latency, but may expose bugs due to
959 now-naive assumptions about each RCU read-side critical section
960 remaining on a given CPU through its execution.
961
962endchoice
963
964config RCU_TRACE
965 bool "Enable tracing for RCU"
966 depends on TREE_RCU || PREEMPT_RCU
967 help
968 This option provides tracing in RCU which presents stats
969 in debugfs for debugging RCU implementation.
970
971 Say Y here if you want to enable RCU tracing
972 Say N if you are unsure.
973
974config RCU_FANOUT
975 int "Tree-based hierarchical RCU fanout value"
976 range 2 64 if 64BIT
977 range 2 32 if !64BIT
978 depends on TREE_RCU
979 default 64 if 64BIT
980 default 32 if !64BIT
981 help
982 This option controls the fanout of hierarchical implementations
983 of RCU, allowing RCU to work efficiently on machines with
984 large numbers of CPUs. This value must be at least the cube
985 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
986 systems and up to 262,144 for 64-bit systems.
987
988 Select a specific number if testing RCU itself.
989 Take the default if unsure.
990
991config RCU_FANOUT_EXACT
992 bool "Disable tree-based hierarchical RCU auto-balancing"
993 depends on TREE_RCU
994 default n
995 help
996 This option forces use of the exact RCU_FANOUT value specified,
997 regardless of imbalances in the hierarchy. This is useful for
998 testing RCU itself, and might one day be useful on systems with
999 strong NUMA behavior.
1000
1001 Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
1002
1003 Say N if unsure.
1004
931config TREE_RCU_TRACE 1005config TREE_RCU_TRACE
932 def_bool RCU_TRACE && TREE_RCU 1006 def_bool RCU_TRACE && TREE_RCU
933 select DEBUG_FS 1007 select DEBUG_FS
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 463f29743ea0..bf987b95b356 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -52,78 +52,3 @@ config PREEMPT
52 52
53endchoice 53endchoice
54 54
55choice
56 prompt "RCU Implementation"
57 default CLASSIC_RCU
58
59config CLASSIC_RCU
60 bool "Classic RCU"
61 help
62 This option selects the classic RCU implementation that is
63 designed for best read-side performance on non-realtime
64 systems.
65
66 Select this option if you are unsure.
67
68config TREE_RCU
69 bool "Tree-based hierarchical RCU"
70 help
71 This option selects the RCU implementation that is
72 designed for very large SMP system with hundreds or
73 thousands of CPUs.
74
75config PREEMPT_RCU
76 bool "Preemptible RCU"
77 depends on PREEMPT
78 help
79 This option reduces the latency of the kernel by making certain
80 RCU sections preemptible. Normally RCU code is non-preemptible, if
81 this option is selected then read-only RCU sections become
82 preemptible. This helps latency, but may expose bugs due to
83 now-naive assumptions about each RCU read-side critical section
84 remaining on a given CPU through its execution.
85
86endchoice
87
88config RCU_TRACE
89 bool "Enable tracing for RCU"
90 depends on TREE_RCU || PREEMPT_RCU
91 help
92 This option provides tracing in RCU which presents stats
93 in debugfs for debugging RCU implementation.
94
95 Say Y here if you want to enable RCU tracing
96 Say N if you are unsure.
97
98config RCU_FANOUT
99 int "Tree-based hierarchical RCU fanout value"
100 range 2 64 if 64BIT
101 range 2 32 if !64BIT
102 depends on TREE_RCU
103 default 64 if 64BIT
104 default 32 if !64BIT
105 help
106 This option controls the fanout of hierarchical implementations
107 of RCU, allowing RCU to work efficiently on machines with
108 large numbers of CPUs. This value must be at least the cube
109 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
110 systems and up to 262,144 for 64-bit systems.
111
112 Select a specific number if testing RCU itself.
113 Take the default if unsure.
114
115config RCU_FANOUT_EXACT
116 bool "Disable tree-based hierarchical RCU auto-balancing"
117 depends on TREE_RCU
118 default n
119 help
120 This option forces use of the exact RCU_FANOUT value specified,
121 regardless of imbalances in the hierarchy. This is useful for
122 testing RCU itself, and might one day be useful on systems with
123 strong NUMA behavior.
124
125 Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
126
127 Say n if unsure.
128
129