From: "Paul E. McKenney" <paul...@kernel.org>

The srcu_read_lock_nmisafe() and srcu_read_unlock_nmisafe() functions
map to __srcu_read_lock() and __srcu_read_unlock() on systems like x86
that have NMI-safe this_cpu_inc() operations.  This makes the underlying
__srcu_read_lock_nmisafe() and __srcu_read_unlock_nmisafe() functions
difficult to test on (for example) x86 systems, allowing bugs to creep in.

This commit therefore creates a FORCE_NEED_SRCU_NMI_SAFE Kconfig that
forces those underlying functions to be used even on systems where they
are not needed, thus providing better testing coverage.

Signed-off-by: Paul E. McKenney <paul...@kernel.org>
Signed-off-by: Boqun Feng <boqun.f...@gmail.com>
---
 kernel/rcu/Kconfig | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/kernel/rcu/Kconfig b/kernel/rcu/Kconfig
index b9b6bc55185d..c8e540af3a35 100644
--- a/kernel/rcu/Kconfig
+++ b/kernel/rcu/Kconfig
@@ -65,6 +65,17 @@ config TREE_SRCU
        help
          This option selects the full-fledged version of SRCU.
 
+config FORCE_NEED_SRCU_NMI_SAFE
+       bool "Force selection of NEED_SRCU_NMI_SAFE"
+       depends on !TINY_SRCU
+       select NEED_SRCU_NMI_SAFE
+       default n
+       help
+         This option forces selection of the NEED_SRCU_NMI_SAFE
+         Kconfig option, allowing testing of srcu_read_lock_nmisafe()
+         and srcu_read_unlock_nmisafe() on architectures (like x86)
+         that select the ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option.
+
 config NEED_SRCU_NMI_SAFE
        def_bool HAVE_NMI && !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && !TINY_SRCU
 
-- 
2.39.5 (Apple Git-154)


Reply via email to