Commit 12d79bafb75639f406a9f71aab94808c414c836e

Authored by Ingo Molnar
1 parent 64db4cfff9

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

... ... @@ -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   -