|
@@ -928,6 +928,80 @@ source "block/Kconfig"
|
|
|
config PREEMPT_NOTIFIERS
|
|
|
bool
|
|
|
|
|
|
+choice
|
|
|
+ prompt "RCU Implementation"
|
|
|
+ default CLASSIC_RCU
|
|
|
+
|
|
|
+config CLASSIC_RCU
|
|
|
+ bool "Classic RCU"
|
|
|
+ help
|
|
|
+ This option selects the classic RCU implementation that is
|
|
|
+ designed for best read-side performance on non-realtime
|
|
|
+ systems.
|
|
|
+
|
|
|
+ Select this option if you are unsure.
|
|
|
+
|
|
|
+config TREE_RCU
|
|
|
+ bool "Tree-based hierarchical RCU"
|
|
|
+ help
|
|
|
+ This option selects the RCU implementation that is
|
|
|
+ designed for very large SMP system with hundreds or
|
|
|
+ thousands of CPUs.
|
|
|
+
|
|
|
+config PREEMPT_RCU
|
|
|
+ bool "Preemptible RCU"
|
|
|
+ depends on PREEMPT
|
|
|
+ help
|
|
|
+ This option reduces the latency of the kernel by making certain
|
|
|
+ RCU sections preemptible. Normally RCU code is non-preemptible, if
|
|
|
+ this option is selected then read-only RCU sections become
|
|
|
+ preemptible. This helps latency, but may expose bugs due to
|
|
|
+ now-naive assumptions about each RCU read-side critical section
|
|
|
+ remaining on a given CPU through its execution.
|
|
|
+
|
|
|
+endchoice
|
|
|
+
|
|
|
+config RCU_TRACE
|
|
|
+ bool "Enable tracing for RCU"
|
|
|
+ depends on TREE_RCU || PREEMPT_RCU
|
|
|
+ help
|
|
|
+ This option provides tracing in RCU which presents stats
|
|
|
+ in debugfs for debugging RCU implementation.
|
|
|
+
|
|
|
+ Say Y here if you want to enable RCU tracing
|
|
|
+ Say N if you are unsure.
|
|
|
+
|
|
|
+config RCU_FANOUT
|
|
|
+ int "Tree-based hierarchical RCU fanout value"
|
|
|
+ range 2 64 if 64BIT
|
|
|
+ range 2 32 if !64BIT
|
|
|
+ depends on TREE_RCU
|
|
|
+ default 64 if 64BIT
|
|
|
+ default 32 if !64BIT
|
|
|
+ help
|
|
|
+ This option controls the fanout of hierarchical implementations
|
|
|
+ of RCU, allowing RCU to work efficiently on machines with
|
|
|
+ large numbers of CPUs. This value must be at least the cube
|
|
|
+ root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
|
|
|
+ systems and up to 262,144 for 64-bit systems.
|
|
|
+
|
|
|
+ Select a specific number if testing RCU itself.
|
|
|
+ Take the default if unsure.
|
|
|
+
|
|
|
+config RCU_FANOUT_EXACT
|
|
|
+ bool "Disable tree-based hierarchical RCU auto-balancing"
|
|
|
+ depends on TREE_RCU
|
|
|
+ default n
|
|
|
+ help
|
|
|
+ This option forces use of the exact RCU_FANOUT value specified,
|
|
|
+ regardless of imbalances in the hierarchy. This is useful for
|
|
|
+ testing RCU itself, and might one day be useful on systems with
|
|
|
+ strong NUMA behavior.
|
|
|
+
|
|
|
+ Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
|
|
|
+
|
|
|
+ Say N if unsure.
|
|
|
+
|
|
|
config TREE_RCU_TRACE
|
|
|
def_bool RCU_TRACE && TREE_RCU
|
|
|
select DEBUG_FS
|