aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--init/Kconfig179
1 files changed, 92 insertions, 87 deletions
diff --git a/init/Kconfig b/init/Kconfig
index a724a149bf3f..989f58b03958 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -238,6 +238,98 @@ config AUDIT_TREE
238 def_bool y 238 def_bool y
239 depends on AUDITSYSCALL && INOTIFY 239 depends on AUDITSYSCALL && INOTIFY
240 240
241menu "RCU Subsystem"
242
243choice
244 prompt "RCU Implementation"
245 default CLASSIC_RCU
246
247config CLASSIC_RCU
248 bool "Classic RCU"
249 help
250 This option selects the classic RCU implementation that is
251 designed for best read-side performance on non-realtime
252 systems.
253
254 Select this option if you are unsure.
255
256config TREE_RCU
257 bool "Tree-based hierarchical RCU"
258 help
259 This option selects the RCU implementation that is
260 designed for very large SMP system with hundreds or
261 thousands of CPUs.
262
263config PREEMPT_RCU
264 bool "Preemptible RCU"
265 depends on PREEMPT
266 help
267 This option reduces the latency of the kernel by making certain
268 RCU sections preemptible. Normally RCU code is non-preemptible, if
269 this option is selected then read-only RCU sections become
270 preemptible. This helps latency, but may expose bugs due to
271 now-naive assumptions about each RCU read-side critical section
272 remaining on a given CPU through its execution.
273
274endchoice
275
276config RCU_TRACE
277 bool "Enable tracing for RCU"
278 depends on TREE_RCU || PREEMPT_RCU
279 help
280 This option provides tracing in RCU which presents stats
281 in debugfs for debugging RCU implementation.
282
283 Say Y here if you want to enable RCU tracing
284 Say N if you are unsure.
285
286config RCU_FANOUT
287 int "Tree-based hierarchical RCU fanout value"
288 range 2 64 if 64BIT
289 range 2 32 if !64BIT
290 depends on TREE_RCU
291 default 64 if 64BIT
292 default 32 if !64BIT
293 help
294 This option controls the fanout of hierarchical implementations
295 of RCU, allowing RCU to work efficiently on machines with
296 large numbers of CPUs. This value must be at least the cube
297 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
298 systems and up to 262,144 for 64-bit systems.
299
300 Select a specific number if testing RCU itself.
301 Take the default if unsure.
302
303config RCU_FANOUT_EXACT
304 bool "Disable tree-based hierarchical RCU auto-balancing"
305 depends on TREE_RCU
306 default n
307 help
308 This option forces use of the exact RCU_FANOUT value specified,
309 regardless of imbalances in the hierarchy. This is useful for
310 testing RCU itself, and might one day be useful on systems with
311 strong NUMA behavior.
312
313 Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
314
315 Say N if unsure.
316
317config TREE_RCU_TRACE
318 def_bool RCU_TRACE && TREE_RCU
319 select DEBUG_FS
320 help
321 This option provides tracing for the TREE_RCU implementation,
322 permitting Makefile to trivially select kernel/rcutree_trace.c.
323
324config PREEMPT_RCU_TRACE
325 def_bool RCU_TRACE && PREEMPT_RCU
326 select DEBUG_FS
327 help
328 This option provides tracing for the PREEMPT_RCU implementation,
329 permitting Makefile to trivially select kernel/rcupreempt_trace.c.
330
331endmenu # "RCU Subsystem"
332
241config IKCONFIG 333config IKCONFIG
242 tristate "Kernel .config support" 334 tristate "Kernel .config support"
243 ---help--- 335 ---help---
@@ -973,90 +1065,3 @@ source "block/Kconfig"
973config PREEMPT_NOTIFIERS 1065config PREEMPT_NOTIFIERS
974 bool 1066 bool
975 1067
976choice
977 prompt "RCU Implementation"
978 default CLASSIC_RCU
979
980config CLASSIC_RCU
981 bool "Classic RCU"
982 help
983 This option selects the classic RCU implementation that is
984 designed for best read-side performance on non-realtime
985 systems.
986
987 Select this option if you are unsure.
988
989config TREE_RCU
990 bool "Tree-based hierarchical RCU"
991 help
992 This option selects the RCU implementation that is
993 designed for very large SMP system with hundreds or
994 thousands of CPUs.
995
996config PREEMPT_RCU
997 bool "Preemptible RCU"
998 depends on PREEMPT
999 help
1000 This option reduces the latency of the kernel by making certain
1001 RCU sections preemptible. Normally RCU code is non-preemptible, if
1002 this option is selected then read-only RCU sections become
1003 preemptible. This helps latency, but may expose bugs due to
1004 now-naive assumptions about each RCU read-side critical section
1005 remaining on a given CPU through its execution.
1006
1007endchoice
1008
1009config RCU_TRACE
1010 bool "Enable tracing for RCU"
1011 depends on TREE_RCU || PREEMPT_RCU
1012 help
1013 This option provides tracing in RCU which presents stats
1014 in debugfs for debugging RCU implementation.
1015
1016 Say Y here if you want to enable RCU tracing
1017 Say N if you are unsure.
1018
1019config RCU_FANOUT
1020 int "Tree-based hierarchical RCU fanout value"
1021 range 2 64 if 64BIT
1022 range 2 32 if !64BIT
1023 depends on TREE_RCU
1024 default 64 if 64BIT
1025 default 32 if !64BIT
1026 help
1027 This option controls the fanout of hierarchical implementations
1028 of RCU, allowing RCU to work efficiently on machines with
1029 large numbers of CPUs. This value must be at least the cube
1030 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
1031 systems and up to 262,144 for 64-bit systems.
1032
1033 Select a specific number if testing RCU itself.
1034 Take the default if unsure.
1035
1036config RCU_FANOUT_EXACT
1037 bool "Disable tree-based hierarchical RCU auto-balancing"
1038 depends on TREE_RCU
1039 default n
1040 help
1041 This option forces use of the exact RCU_FANOUT value specified,
1042 regardless of imbalances in the hierarchy. This is useful for
1043 testing RCU itself, and might one day be useful on systems with
1044 strong NUMA behavior.
1045
1046 Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
1047
1048 Say N if unsure.
1049
1050config TREE_RCU_TRACE
1051 def_bool RCU_TRACE && TREE_RCU
1052 select DEBUG_FS
1053 help
1054 This option provides tracing for the TREE_RCU implementation,
1055 permitting Makefile to trivially select kernel/rcutree_trace.c.
1056
1057config PREEMPT_RCU_TRACE
1058 def_bool RCU_TRACE && PREEMPT_RCU
1059 select DEBUG_FS
1060 help
1061 This option provides tracing for the PREEMPT_RCU implementation,
1062 permitting Makefile to trivially select kernel/rcupreempt_trace.c.