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 f763762d544a..6b0fdedf3596 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -928,10 +928,90 @@ source "block/Kconfig" | |||
928 | config PREEMPT_NOTIFIERS | 928 | config PREEMPT_NOTIFIERS |
929 | bool | 929 | bool |
930 | 930 | ||
931 | choice | ||
932 | prompt "RCU Implementation" | ||
933 | default CLASSIC_RCU | ||
934 | |||
931 | config CLASSIC_RCU | 935 | config CLASSIC_RCU |
932 | def_bool !PREEMPT_RCU | 936 | bool "Classic RCU" |
933 | help | 937 | help |
934 | This option selects the classic RCU implementation that is | 938 | This option selects the classic RCU implementation that is |
935 | designed for best read-side performance on non-realtime | 939 | designed for best read-side performance on non-realtime |
936 | systems. Classic RCU is the default. Note that the | 940 | systems. |
937 | PREEMPT_RCU symbol is used to select/deselect this option. | 941 | |
942 | Select this option if you are unsure. | ||
943 | |||
944 | config 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 | |||
951 | config 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 | |||
962 | endchoice | ||
963 | |||
964 | config 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 | |||
974 | config 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 | |||
991 | config 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 | |||
1005 | config TREE_RCU_TRACE | ||
1006 | def_bool RCU_TRACE && TREE_RCU | ||
1007 | select DEBUG_FS | ||
1008 | help | ||
1009 | This option provides tracing for the TREE_RCU implementation, | ||
1010 | permitting Makefile to trivially select kernel/rcutree_trace.c. | ||
1011 | |||
1012 | config PREEMPT_RCU_TRACE | ||
1013 | def_bool RCU_TRACE && PREEMPT_RCU | ||
1014 | select DEBUG_FS | ||
1015 | help | ||
1016 | This option provides tracing for the PREEMPT_RCU implementation, | ||
1017 | permitting Makefile to trivially select kernel/rcupreempt_trace.c. | ||