diff options
Diffstat (limited to 'kernel/Kconfig.preempt')
-rw-r--r-- | kernel/Kconfig.preempt | 62 |
1 files changed, 56 insertions, 6 deletions
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt index 9fdba03dc1fc..463f29743ea0 100644 --- a/kernel/Kconfig.preempt +++ b/kernel/Kconfig.preempt | |||
@@ -52,10 +52,29 @@ 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 | |||
55 | config PREEMPT_RCU | 75 | config PREEMPT_RCU |
56 | bool "Preemptible RCU" | 76 | bool "Preemptible RCU" |
57 | depends on PREEMPT | 77 | depends on PREEMPT |
58 | default n | ||
59 | help | 78 | help |
60 | This option reduces the latency of the kernel by making certain | 79 | This option reduces the latency of the kernel by making certain |
61 | RCU sections preemptible. Normally RCU code is non-preemptible, if | 80 | RCU sections preemptible. Normally RCU code is non-preemptible, if |
@@ -64,16 +83,47 @@ config PREEMPT_RCU | |||
64 | now-naive assumptions about each RCU read-side critical section | 83 | now-naive assumptions about each RCU read-side critical section |
65 | remaining on a given CPU through its execution. | 84 | remaining on a given CPU through its execution. |
66 | 85 | ||
67 | Say N if you are unsure. | 86 | endchoice |
68 | 87 | ||
69 | config RCU_TRACE | 88 | config RCU_TRACE |
70 | bool "Enable tracing for RCU - currently stats in debugfs" | 89 | bool "Enable tracing for RCU" |
71 | depends on PREEMPT_RCU | 90 | depends on TREE_RCU || PREEMPT_RCU |
72 | select DEBUG_FS | ||
73 | default y | ||
74 | help | 91 | help |
75 | This option provides tracing in RCU which presents stats | 92 | This option provides tracing in RCU which presents stats |
76 | in debugfs for debugging RCU implementation. | 93 | in debugfs for debugging RCU implementation. |
77 | 94 | ||
78 | Say Y here if you want to enable RCU tracing | 95 | Say Y here if you want to enable RCU tracing |
79 | Say N if you are unsure. | 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 | |||