diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-25 03:31:28 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-25 03:31:28 -0500 |
commit | 12d79bafb75639f406a9f71aab94808c414c836e (patch) | |
tree | 2d7ba81720be2ec8c897dd3ab6781cccd973249c | |
parent | 64db4cfff99c04cd5f550357edcc8780f96b54a2 (diff) |
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>
-rw-r--r-- | init/Kconfig | 74 | ||||
-rw-r--r-- | kernel/Kconfig.preempt | 75 |
2 files changed, 74 insertions, 75 deletions
diff --git a/init/Kconfig b/init/Kconfig index 9dd7958a71f0..6b0fdedf3596 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -928,6 +928,80 @@ 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 | |||
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 | config TREE_RCU_TRACE | 1005 | config TREE_RCU_TRACE |
932 | def_bool RCU_TRACE && TREE_RCU | 1006 | def_bool RCU_TRACE && TREE_RCU |
933 | select DEBUG_FS | 1007 | select DEBUG_FS |
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt index 463f29743ea0..bf987b95b356 100644 --- a/kernel/Kconfig.preempt +++ b/kernel/Kconfig.preempt | |||
@@ -52,78 +52,3 @@ config PREEMPT | |||
52 | 52 | ||
53 | endchoice | 53 | endchoice |
54 | 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 | |||