TASKS_TRACE_RCU_NO_MB defaults to ARCH_WANTS_NO_INSTR, on the grounds (see 1a72f4bb6f3e) that architectures with noinstr entry code only ever run tracing where RCU is watching and so can dispense with the read-side smp_mb() in rcu_read_lock_trace() and friends. But the option also depends on RCU_EXPERT, and a Kconfig default is not applied to a symbol whose dependencies are unmet, so on an ordinary RCU_EXPERT=n build of such an architecture the option is simply absent and every Tasks Trace reader pays for two full barriers that the architecture does not need.
Keep the prompt behind RCU_EXPERT, so that overriding the default in either direction remains an expert decision, but let the default itself apply unconditionally. On x86-64 and arm64 defconfig this turns the barriers off, as intended; architectures without ARCH_WANTS_NO_INSTR are unchanged. Assisted-by: LLM Signed-off-by: Josef Bacik <[email protected]> --- kernel/rcu/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/Kconfig b/kernel/rcu/Kconfig index 332df7a7a634..e3cfe1fe5592 100644 --- a/kernel/rcu/Kconfig +++ b/kernel/rcu/Kconfig @@ -142,8 +142,8 @@ config TASKS_TRACE_RCU default n config TASKS_TRACE_RCU_NO_MB - bool "Override RCU Tasks Trace inclusion of read-side memory barriers" - depends on RCU_EXPERT && TASKS_TRACE_RCU + bool "Override RCU Tasks Trace inclusion of read-side memory barriers" if RCU_EXPERT + depends on TASKS_TRACE_RCU default ARCH_WANTS_NO_INSTR help This option prevents the use of read-side memory barriers in -- 2.55.0
