diff options
Diffstat (limited to 'init')
-rw-r--r-- | init/Kconfig | 86 |
1 files changed, 83 insertions, 3 deletions
diff --git a/init/Kconfig b/init/Kconfig index 8a63c404ef44..13627191a60d 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -936,10 +936,90 @@ source "block/Kconfig" | |||
936 | config PREEMPT_NOTIFIERS | 936 | config PREEMPT_NOTIFIERS |
937 | bool | 937 | bool |
938 | 938 | ||
939 | choice | ||
940 | prompt "RCU Implementation" | ||
941 | default CLASSIC_RCU | ||
942 | |||
939 | config CLASSIC_RCU | 943 | config CLASSIC_RCU |
940 | def_bool !PREEMPT_RCU | 944 | bool "Classic RCU" |
941 | help | 945 | help |
942 | This option selects the classic RCU implementation that is | 946 | This option selects the classic RCU implementation that is |
943 | designed for best read-side performance on non-realtime | 947 | designed for best read-side performance on non-realtime |
944 | systems. Classic RCU is the default. Note that the | 948 | systems. |
945 | PREEMPT_RCU symbol is used to select/deselect this option. | 949 | |
950 | Select this option if you are unsure. | ||
951 | |||
952 | config TREE_RCU | ||
953 | bool "Tree-based hierarchical RCU" | ||
954 | help | ||
955 | This option selects the RCU implementation that is | ||
956 | designed for very large SMP system with hundreds or | ||
957 | thousands of CPUs. | ||
958 | |||
959 | config PREEMPT_RCU | ||
960 | bool "Preemptible RCU" | ||
961 | depends on PREEMPT | ||
962 | help | ||
963 | This option reduces the latency of the kernel by making certain | ||
964 | RCU sections preemptible. Normally RCU code is non-preemptible, if | ||
965 | this option is selected then read-only RCU sections become | ||
966 | preemptible. This helps latency, but may expose bugs due to | ||
967 | now-naive assumptions about each RCU read-side critical section | ||
968 | remaining on a given CPU through its execution. | ||
969 | |||
970 | endchoice | ||
971 | |||
972 | config RCU_TRACE | ||
973 | bool "Enable tracing for RCU" | ||
974 | depends on TREE_RCU || PREEMPT_RCU | ||
975 | help | ||
976 | This option provides tracing in RCU which presents stats | ||
977 | in debugfs for debugging RCU implementation. | ||
978 | |||
979 | Say Y here if you want to enable RCU tracing | ||
980 | Say N if you are unsure. | ||
981 | |||
982 | config RCU_FANOUT | ||
983 | int "Tree-based hierarchical RCU fanout value" | ||
984 | range 2 64 if 64BIT | ||
985 | range 2 32 if !64BIT | ||
986 | depends on TREE_RCU | ||
987 | default 64 if 64BIT | ||
988 | default 32 if !64BIT | ||
989 | help | ||
990 | This option controls the fanout of hierarchical implementations | ||
991 | of RCU, allowing RCU to work efficiently on machines with | ||
992 | large numbers of CPUs. This value must be at least the cube | ||
993 | root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit | ||
994 | systems and up to 262,144 for 64-bit systems. | ||
995 | |||
996 | Select a specific number if testing RCU itself. | ||
997 | Take the default if unsure. | ||
998 | |||
999 | config RCU_FANOUT_EXACT | ||
1000 | bool "Disable tree-based hierarchical RCU auto-balancing" | ||
1001 | depends on TREE_RCU | ||
1002 | default n | ||
1003 | help | ||
1004 | This option forces use of the exact RCU_FANOUT value specified, | ||
1005 | regardless of imbalances in the hierarchy. This is useful for | ||
1006 | testing RCU itself, and might one day be useful on systems with | ||
1007 | strong NUMA behavior. | ||
1008 | |||
1009 | Without RCU_FANOUT_EXACT, the code will balance the hierarchy. | ||
1010 | |||
1011 | Say N if unsure. | ||
1012 | |||
1013 | config TREE_RCU_TRACE | ||
1014 | def_bool RCU_TRACE && TREE_RCU | ||
1015 | select DEBUG_FS | ||
1016 | help | ||
1017 | This option provides tracing for the TREE_RCU implementation, | ||
1018 | permitting Makefile to trivially select kernel/rcutree_trace.c. | ||
1019 | |||
1020 | config PREEMPT_RCU_TRACE | ||
1021 | def_bool RCU_TRACE && PREEMPT_RCU | ||
1022 | select DEBUG_FS | ||
1023 | help | ||
1024 | This option provides tracing for the PREEMPT_RCU implementation, | ||
1025 | permitting Makefile to trivially select kernel/rcupreempt_trace.c. | ||