diff options
| -rw-r--r-- | init/Kconfig | 179 |
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 | ||
| 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--- |
| @@ -973,90 +1065,3 @@ source "block/Kconfig" | |||
| 973 | config PREEMPT_NOTIFIERS | 1065 | config PREEMPT_NOTIFIERS |
| 974 | bool | 1066 | bool |
| 975 | 1067 | ||
| 976 | choice | ||
| 977 | prompt "RCU Implementation" | ||
| 978 | default CLASSIC_RCU | ||
| 979 | |||
| 980 | config 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 | |||
| 989 | config 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 | |||
| 996 | config 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 | |||
| 1007 | endchoice | ||
| 1008 | |||
| 1009 | config 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 | |||
| 1019 | config 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 | |||
| 1036 | config 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 | |||
| 1050 | config 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 | |||
| 1057 | config 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. | ||
