mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
64db4cfff9
commit
12d79bafb7
74
init/Kconfig
74
init/Kconfig
|
@ -928,6 +928,80 @@ source "block/Kconfig"
|
||||||
config PREEMPT_NOTIFIERS
|
config PREEMPT_NOTIFIERS
|
||||||
bool
|
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
|
config TREE_RCU_TRACE
|
||||||
def_bool RCU_TRACE && TREE_RCU
|
def_bool RCU_TRACE && TREE_RCU
|
||||||
select DEBUG_FS
|
select DEBUG_FS
|
||||||
|
|
|
@ -52,78 +52,3 @@ config PREEMPT
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue