Commit 12d79bafb75639f406a9f71aab94808c414c836e
1 parent
64db4cfff9
Exists in
master
and in
7 other branches
rcu: provide RCU options on non-preempt architectures too
Impact: build fix Some old architectures still do not use kernel/Kconfig.preempt, so the moving of the RCU options there broke their build: In file included from /home/mingo/tip/include/linux/sem.h:81, from /home/mingo/tip/include/linux/sched.h:69, from /home/mingo/tip/arch/alpha/kernel/asm-offsets.c:9: /home/mingo/tip/include/linux/rcupdate.h:62:2: error: #error "Unknown RCU implementation specified to kernel configuration" Move these options back to init/Kconfig, which every architecture includes. Signed-off-by: Ingo Molnar <mingo@elte.hu>
Showing 2 changed files with 74 additions and 75 deletions Side-by-side Diff
init/Kconfig
... | ... | @@ -928,6 +928,80 @@ |
928 | 928 | config PREEMPT_NOTIFIERS |
929 | 929 | bool |
930 | 930 | |
931 | +choice | |
932 | + prompt "RCU Implementation" | |
933 | + default CLASSIC_RCU | |
934 | + | |
935 | +config CLASSIC_RCU | |
936 | + bool "Classic RCU" | |
937 | + help | |
938 | + This option selects the classic RCU implementation that is | |
939 | + designed for best read-side performance on non-realtime | |
940 | + systems. | |
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 | + | |
931 | 1005 | config TREE_RCU_TRACE |
932 | 1006 | def_bool RCU_TRACE && TREE_RCU |
933 | 1007 | select DEBUG_FS |
kernel/Kconfig.preempt
... | ... | @@ -51,80 +51,4 @@ |
51 | 51 | range. |
52 | 52 | |
53 | 53 | endchoice |
54 | - | |
55 | -choice | |
56 | - prompt "RCU Implementation" | |
57 | - default CLASSIC_RCU | |
58 | - | |
59 | -config CLASSIC_RCU | |
60 | - bool "Classic RCU" | |
61 | - help | |
62 | - This option selects the classic RCU implementation that is | |
63 | - designed for best read-side performance on non-realtime | |
64 | - systems. | |
65 | - | |
66 | - Select this option if you are unsure. | |
67 | - | |
68 | -config TREE_RCU | |
69 | - bool "Tree-based hierarchical RCU" | |
70 | - help | |
71 | - This option selects the RCU implementation that is | |
72 | - designed for very large SMP system with hundreds or | |
73 | - thousands of CPUs. | |
74 | - | |
75 | -config PREEMPT_RCU | |
76 | - bool "Preemptible RCU" | |
77 | - depends on PREEMPT | |
78 | - help | |
79 | - This option reduces the latency of the kernel by making certain | |
80 | - RCU sections preemptible. Normally RCU code is non-preemptible, if | |
81 | - this option is selected then read-only RCU sections become | |
82 | - preemptible. This helps latency, but may expose bugs due to | |
83 | - now-naive assumptions about each RCU read-side critical section | |
84 | - remaining on a given CPU through its execution. | |
85 | - | |
86 | -endchoice | |
87 | - | |
88 | -config RCU_TRACE | |
89 | - bool "Enable tracing for RCU" | |
90 | - depends on TREE_RCU || PREEMPT_RCU | |
91 | - help | |
92 | - This option provides tracing in RCU which presents stats | |
93 | - in debugfs for debugging RCU implementation. | |
94 | - | |
95 | - Say Y here if you want to enable RCU tracing | |
96 | - Say N if you are unsure. | |
97 | - | |
98 | -config RCU_FANOUT | |
99 | - int "Tree-based hierarchical RCU fanout value" | |
100 | - range 2 64 if 64BIT | |
101 | - range 2 32 if !64BIT | |
102 | - depends on TREE_RCU | |
103 | - default 64 if 64BIT | |
104 | - default 32 if !64BIT | |
105 | - help | |
106 | - This option controls the fanout of hierarchical implementations | |
107 | - of RCU, allowing RCU to work efficiently on machines with | |
108 | - large numbers of CPUs. This value must be at least the cube | |
109 | - root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit | |
110 | - systems and up to 262,144 for 64-bit systems. | |
111 | - | |
112 | - Select a specific number if testing RCU itself. | |
113 | - Take the default if unsure. | |
114 | - | |
115 | -config RCU_FANOUT_EXACT | |
116 | - bool "Disable tree-based hierarchical RCU auto-balancing" | |
117 | - depends on TREE_RCU | |
118 | - default n | |
119 | - help | |
120 | - This option forces use of the exact RCU_FANOUT value specified, | |
121 | - regardless of imbalances in the hierarchy. This is useful for | |
122 | - testing RCU itself, and might one day be useful on systems with | |
123 | - strong NUMA behavior. | |
124 | - | |
125 | - Without RCU_FANOUT_EXACT, the code will balance the hierarchy. | |
126 | - | |
127 | - Say n if unsure. | |
128 | - | |
129 | - |