diff options
Diffstat (limited to 'init')
-rw-r--r-- | init/Kconfig | 179 |
1 files changed, 92 insertions, 87 deletions
diff --git a/init/Kconfig b/init/Kconfig index 2af83825634e..3be35f3a001b 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 | ||
241 | menu "RCU Subsystem" | ||
242 | |||
243 | choice | ||
244 | prompt "RCU Implementation" | ||
245 | default CLASSIC_RCU | ||
246 | |||
247 | config 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 | |||
256 | config 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 | |||
263 | config 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 | |||
274 | endchoice | ||
275 | |||
276 | config 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 | |||
286 | config 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 | |||
303 | config 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 | |||
317 | config 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 | |||
324 | config 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 | |||
331 | endmenu # "RCU Subsystem" | ||
332 | |||
241 | config IKCONFIG | 333 | config IKCONFIG |
242 | tristate "Kernel .config support" | 334 | tristate "Kernel .config support" |
243 | ---help--- | 335 | ---help--- |
@@ -972,90 +1064,3 @@ source "block/Kconfig" | |||
972 | config PREEMPT_NOTIFIERS | 1064 | config PREEMPT_NOTIFIERS |
973 | bool | 1065 | bool |
974 | 1066 | ||
975 | choice | ||
976 | prompt "RCU Implementation" | ||
977 | default CLASSIC_RCU | ||
978 | |||
979 | config CLASSIC_RCU | ||
980 | bool "Classic RCU" | ||
981 | help | ||
982 | This option selects the classic RCU implementation that is | ||
983 | designed for best read-side performance on non-realtime | ||
984 | systems. | ||
985 | |||
986 | Select this option if you are unsure. | ||
987 | |||
988 | config TREE_RCU | ||
989 | bool "Tree-based hierarchical RCU" | ||
990 | help | ||
991 | This option selects the RCU implementation that is | ||
992 | designed for very large SMP system with hundreds or | ||
993 | thousands of CPUs. | ||
994 | |||
995 | config PREEMPT_RCU | ||
996 | bool "Preemptible RCU" | ||
997 | depends on PREEMPT | ||
998 | help | ||
999 | This option reduces the latency of the kernel by making certain | ||
1000 | RCU sections preemptible. Normally RCU code is non-preemptible, if | ||
1001 | this option is selected then read-only RCU sections become | ||
1002 | preemptible. This helps latency, but may expose bugs due to | ||
1003 | now-naive assumptions about each RCU read-side critical section | ||
1004 | remaining on a given CPU through its execution. | ||
1005 | |||
1006 | endchoice | ||
1007 | |||
1008 | config RCU_TRACE | ||
1009 | bool "Enable tracing for RCU" | ||
1010 | depends on TREE_RCU || PREEMPT_RCU | ||
1011 | help | ||
1012 | This option provides tracing in RCU which presents stats | ||
1013 | in debugfs for debugging RCU implementation. | ||
1014 | |||
1015 | Say Y here if you want to enable RCU tracing | ||
1016 | Say N if you are unsure. | ||
1017 | |||
1018 | config RCU_FANOUT | ||
1019 | int "Tree-based hierarchical RCU fanout value" | ||
1020 | range 2 64 if 64BIT | ||
1021 | range 2 32 if !64BIT | ||
1022 | depends on TREE_RCU | ||
1023 | default 64 if 64BIT | ||
1024 | default 32 if !64BIT | ||
1025 | help | ||
1026 | This option controls the fanout of hierarchical implementations | ||
1027 | of RCU, allowing RCU to work efficiently on machines with | ||
1028 | large numbers of CPUs. This value must be at least the cube | ||
1029 | root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit | ||
1030 | systems and up to 262,144 for 64-bit systems. | ||
1031 | |||
1032 | Select a specific number if testing RCU itself. | ||
1033 | Take the default if unsure. | ||
1034 | |||
1035 | config RCU_FANOUT_EXACT | ||
1036 | bool "Disable tree-based hierarchical RCU auto-balancing" | ||
1037 | depends on TREE_RCU | ||
1038 | default n | ||
1039 | help | ||
1040 | This option forces use of the exact RCU_FANOUT value specified, | ||
1041 | regardless of imbalances in the hierarchy. This is useful for | ||
1042 | testing RCU itself, and might one day be useful on systems with | ||
1043 | strong NUMA behavior. | ||
1044 | |||
1045 | Without RCU_FANOUT_EXACT, the code will balance the hierarchy. | ||
1046 | |||
1047 | Say N if unsure. | ||
1048 | |||
1049 | config TREE_RCU_TRACE | ||
1050 | def_bool RCU_TRACE && TREE_RCU | ||
1051 | select DEBUG_FS | ||
1052 | help | ||
1053 | This option provides tracing for the TREE_RCU implementation, | ||
1054 | permitting Makefile to trivially select kernel/rcutree_trace.c. | ||
1055 | |||
1056 | config PREEMPT_RCU_TRACE | ||
1057 | def_bool RCU_TRACE && PREEMPT_RCU | ||
1058 | select DEBUG_FS | ||
1059 | help | ||
1060 | This option provides tracing for the PREEMPT_RCU implementation, | ||
1061 | permitting Makefile to trivially select kernel/rcupreempt_trace.c. | ||