public inbox for rcu@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites
@ 2026-03-03 23:58 Paul E. McKenney
  2026-03-03 23:59 ` [PATCH 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption Paul E. McKenney
                   ` (4 more replies)
  0 siblings, 5 replies; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-03 23:58 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt

Hello!

As of v7.0-rc1, architectures that support preemption, including x86 and
arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
Attempting to build kernels with these two Kconfig options results in
.config errors, which causes torture-test programs such as rcutorture
to throw false-positive errors.  This series fixes this v7.0-rc1
regression by converting these scanarios from CONFIG_PREEMPT_NONE=y or
CONFIG_PREEMPT_VOLUNTARY=y to CONFIG_PREEMPT_LAZY=y.

Those maintaining architectures not supporting preemption might wish to
run rcutorture with CONFIG_PREEMPT_NONE=y and CONFIG_PREEMPT_VOLUNTARY=y
because I no longer have access to any systems supporting these Kconfig
choices.

With all that said, the patches are as follows:

1.	rcutorture: Update due to x86 not supporting none/voluntary
	preemption.

2.	rcuscale: Update due to x86 not supporting none/voluntary
	preemption.

3.	refscale: Update due to x86 not supporting none/voluntary
	preemption.

4.	scftorture: Update due to x86 not supporting none/voluntary
	preemption.

						Thanx, Paul

------------------------------------------------------------------------

 rcu/SRCU-N         |    3 ++-
 rcu/SRCU-T         |    3 ++-
 rcu/SRCU-U         |    3 ++-
 rcu/TASKS02        |    3 ++-
 rcu/TINY01         |    3 ++-
 rcu/TINY02         |    3 ++-
 rcu/TRACE01        |    3 ++-
 rcu/TREE04         |    3 ++-
 rcu/TREE05         |    3 ++-
 rcu/TREE06         |    3 ++-
 rcu/TRIVIAL        |    3 ++-
 rcuscale/TINY      |    3 ++-
 rcuscale/TRACE01   |    3 ++-
 refscale/NOPREEMPT |    3 ++-
 refscale/TINY      |    3 ++-
 scf/NOPREEMPT      |    3 ++-
 16 files changed, 32 insertions(+), 16 deletions(-)

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-03 23:58 [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites Paul E. McKenney
@ 2026-03-03 23:59 ` Paul E. McKenney
  2026-03-04 17:26   ` [PATCH v2 " Paul E. McKenney
  2026-03-03 23:59 ` [PATCH 2/4] rcuscale: " Paul E. McKenney
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-03 23:59 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney

As of v7.0-rc1, architectures that support preemption, including x86 and
arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
Attempting to build kernels with these two Kconfig options results in
.config errors.  This commit therefore switches such rcutorture scenarios
to CONFIG_PREEMPT_LAZY.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 tools/testing/selftests/rcutorture/configs/rcu/SRCU-N  | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/SRCU-T  | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/SRCU-U  | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/TASKS02 | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/TINY01  | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/TINY02  | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/TRACE01 | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/TREE04  | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/TREE05  | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/TREE06  | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL | 3 ++-
 11 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
index 07f5e0a70ae70..90797c9e9410e 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
+++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
@@ -2,7 +2,8 @@ CONFIG_RCU_TRACE=n
 CONFIG_SMP=y
 CONFIG_NR_CPUS=4
 CONFIG_HOTPLUG_CPU=y
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 #CHECK#CONFIG_RCU_EXPERT=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
index c70cf0405f248..06e4d1030279c 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
+++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
index bc9eeabaa1b18..540fa4ee6b1ba 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
+++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02 b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
index 2f9fcffff5ae3..dd2bd4e08da4e 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
index bd5ed7b0da5f0..37be5468c9d9f 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
index 30439f6fc20e6..be8860342ef71 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
index 18efab346381a..8fb124c28f283 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
@@ -1,7 +1,8 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=5
 CONFIG_HOTPLUG_CPU=y
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
index f49fda1c88811..f9d54ddc73a20 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
@@ -1,7 +1,8 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
+CONFIG_PREEMPT_LAZY=y
 CONFIG_PREEMPT_NONE=n
-CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
 CONFIG_PREEMPT_LAZY=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
index 0513aa33c32c4..93a17fe050bd4 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
@@ -1,6 +1,7 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_LAZY=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
index bfd88c46dbd73..73a8945780abd 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
@@ -1,6 +1,7 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_LAZY=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
index 5d546efa68e83..d18cfbd606220 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
@@ -1,6 +1,7 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_HZ_PERIODIC=n
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 2/4] rcuscale: Update due to x86 not supporting none/voluntary preemption
  2026-03-03 23:58 [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites Paul E. McKenney
  2026-03-03 23:59 ` [PATCH 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption Paul E. McKenney
@ 2026-03-03 23:59 ` Paul E. McKenney
  2026-03-03 23:59 ` [PATCH 3/4] refscale: " Paul E. McKenney
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-03 23:59 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney

As of v7.0-rc1, architectures that support preemption, including x86 and
arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
Attempting to build kernels with these two Kconfig options results in
.config errors.  This commit therefore switches such rcuscale scenarios
to CONFIG_PREEMPT_LAZY.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 tools/testing/selftests/rcutorture/configs/rcuscale/TINY    | 3 ++-
 tools/testing/selftests/rcutorture/configs/rcuscale/TRACE01 | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/configs/rcuscale/TINY b/tools/testing/selftests/rcutorture/configs/rcuscale/TINY
index 0fa2dc086e10c..c1a7d38823fba 100644
--- a/tools/testing/selftests/rcutorture/configs/rcuscale/TINY
+++ b/tools/testing/selftests/rcutorture/configs/rcuscale/TINY
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcuscale/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcuscale/TRACE01
index 0059592c7408a..f3f1368b83869 100644
--- a/tools/testing/selftests/rcutorture/configs/rcuscale/TRACE01
+++ b/tools/testing/selftests/rcutorture/configs/rcuscale/TRACE01
@@ -1,5 +1,6 @@
 CONFIG_SMP=y
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 3/4] refscale: Update due to x86 not supporting none/voluntary preemption
  2026-03-03 23:58 [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites Paul E. McKenney
  2026-03-03 23:59 ` [PATCH 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption Paul E. McKenney
  2026-03-03 23:59 ` [PATCH 2/4] rcuscale: " Paul E. McKenney
@ 2026-03-03 23:59 ` Paul E. McKenney
  2026-03-03 23:59 ` [PATCH 4/4] scftorture: " Paul E. McKenney
  2026-03-05 21:29 ` [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites Boqun Feng
  4 siblings, 0 replies; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-03 23:59 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney

As of v7.0-rc1, architectures that support preemption, including x86 and
arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
Attempting to build kernels with these two Kconfig options results in
.config errors.  This commit therefore switches such refscale scenarios
to CONFIG_PREEMPT_LAZY.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 tools/testing/selftests/rcutorture/configs/refscale/NOPREEMPT | 3 ++-
 tools/testing/selftests/rcutorture/configs/refscale/TINY      | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/configs/refscale/NOPREEMPT b/tools/testing/selftests/rcutorture/configs/refscale/NOPREEMPT
index 67f9d2998afd3..1f215e17cbae2 100644
--- a/tools/testing/selftests/rcutorture/configs/refscale/NOPREEMPT
+++ b/tools/testing/selftests/rcutorture/configs/refscale/NOPREEMPT
@@ -1,5 +1,6 @@
 CONFIG_SMP=y
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/refscale/TINY b/tools/testing/selftests/rcutorture/configs/refscale/TINY
index 759343980b80d..9a11b578ff344 100644
--- a/tools/testing/selftests/rcutorture/configs/refscale/TINY
+++ b/tools/testing/selftests/rcutorture/configs/refscale/TINY
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 4/4] scftorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-03 23:58 [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites Paul E. McKenney
                   ` (2 preceding siblings ...)
  2026-03-03 23:59 ` [PATCH 3/4] refscale: " Paul E. McKenney
@ 2026-03-03 23:59 ` Paul E. McKenney
  2026-03-05 21:29 ` [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites Boqun Feng
  4 siblings, 0 replies; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-03 23:59 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney

As of v7.0-rc1, architectures that support preemption, including x86 and
arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
Attempting to build kernels with these two Kconfig options results in
.config errors.  This commit therefore switches such scftorture scenarios
to CONFIG_PREEMPT_LAZY.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT b/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT
index 6133f54ce2a7d..f9621e2770a41 100644
--- a/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT
+++ b/tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT
@@ -1,5 +1,6 @@
 CONFIG_SMP=y
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v2 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-03 23:59 ` [PATCH 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption Paul E. McKenney
@ 2026-03-04 17:26   ` Paul E. McKenney
  2026-03-05  0:01     ` [PATCH v3 " Paul E. McKenney
  0 siblings, 1 reply; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-04 17:26 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt

As of v7.0-rc1, architectures that support preemption, including x86 and
arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
Attempting to build kernels with these two Kconfig options results in
.config errors.  This commit therefore switches such rcutorture scenarios
to CONFIG_PREEMPT_LAZY.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---

Changes since v1:

o	Add CONFIG_PREEMPT_DYNAMIC=n in order to test non-preemptible RCU.

o	Remove CONFIG_PREEMPT_COUNT=n because it conflicts with
	CONFIG_PREEMPT_LAZY=y.

o	Remove some stray conflicting CONFIG_PREEMPT_LAZY=n instances.

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
index 07f5e0a70ae70..f943cdfb0a741 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
+++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
@@ -2,7 +2,9 @@ CONFIG_RCU_TRACE=n
 CONFIG_SMP=y
 CONFIG_NR_CPUS=4
 CONFIG_HOTPLUG_CPU=y
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_DYNAMIC=n
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 #CHECK#CONFIG_RCU_EXPERT=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
index c70cf0405f248..06e4d1030279c 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
+++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
index bc9eeabaa1b18..71da6e3e94886 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
+++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
@@ -7,4 +8,3 @@ CONFIG_PREEMPT_DYNAMIC=n
 CONFIG_RCU_TRACE=n
 CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
-CONFIG_PREEMPT_COUNT=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02 b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
index 2f9fcffff5ae3..dd2bd4e08da4e 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
index bd5ed7b0da5f0..2be53bf60d65b 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
@@ -1,9 +1,9 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
-CONFIG_PREEMPT_LAZY=n
 #CHECK#CONFIG_TINY_RCU=y
 CONFIG_HZ_PERIODIC=n
 CONFIG_NO_HZ_IDLE=y
@@ -12,4 +12,3 @@ CONFIG_RCU_TRACE=n
 #CHECK#CONFIG_RCU_STALL_COMMON=n
 CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
-CONFIG_PREEMPT_COUNT=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
index 30439f6fc20e6..be8860342ef71 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
index 18efab346381a..8fb124c28f283 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
@@ -1,7 +1,8 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=5
 CONFIG_HOTPLUG_CPU=y
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
index f49fda1c88811..ac857d5bcb222 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
@@ -1,10 +1,10 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
+CONFIG_PREEMPT_LAZY=y
 CONFIG_PREEMPT_NONE=n
-CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
-CONFIG_PREEMPT_LAZY=n
 #CHECK#CONFIG_TREE_RCU=y
 #CHECK#CONFIG_PREEMPT_RCU=n
 CONFIG_HZ_PERIODIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
index 0513aa33c32c4..61d15b1b54d16 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
@@ -1,9 +1,10 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_DYNAMIC=n
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
-CONFIG_PREEMPT_LAZY=n
 #CHECK#CONFIG_TREE_RCU=y
 CONFIG_HZ_PERIODIC=n
 CONFIG_NO_HZ_IDLE=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
index bfd88c46dbd73..0e090bb68a0f6 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
@@ -1,9 +1,10 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_DYNAMIC=n
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
-CONFIG_PREEMPT_LAZY=n
 #CHECK#CONFIG_TREE_RCU=y
 #CHECK#CONFIG_PREEMPT_RCU=n
 CONFIG_HZ_PERIODIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
index 5d546efa68e83..696fba9968c60 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
@@ -1,6 +1,8 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_DYNAMIC=n
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_HZ_PERIODIC=n

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v3 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-04 17:26   ` [PATCH v2 " Paul E. McKenney
@ 2026-03-05  0:01     ` Paul E. McKenney
  2026-03-05 17:53       ` Joel Fernandes
  2026-03-05 18:22       ` Boqun Feng
  0 siblings, 2 replies; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-05  0:01 UTC (permalink / raw)
  To: rcu; +Cc: linux-kernel, kernel-team, rostedt

As of v7.0-rc1, architectures that support preemption, including x86 and
arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
Attempting to build kernels with these two Kconfig options results in
.config errors.  This commit therefore switches such rcutorture scenarios
to CONFIG_PREEMPT_LAZY.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>

---

Changes since v2:

o	Fold in c69ac5693540 ("rcutorture: Adjust scenarios for default
	lazy preemption")

Changes since v1:

o	Add CONFIG_PREEMPT_DYNAMIC=n in order to test non-preemptible RCU.

o	Remove CONFIG_PREEMPT_COUNT=n because it conflicts with
	CONFIG_PREEMPT_LAZY=y.

o	Remove some stray conflicting CONFIG_PREEMPT_LAZY=n instances.

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
index 07f5e0a70ae70..f943cdfb0a741 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
+++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
@@ -2,7 +2,9 @@ CONFIG_RCU_TRACE=n
 CONFIG_SMP=y
 CONFIG_NR_CPUS=4
 CONFIG_HOTPLUG_CPU=y
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_DYNAMIC=n
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 #CHECK#CONFIG_RCU_EXPERT=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
index c70cf0405f248..06e4d1030279c 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
+++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
index bc9eeabaa1b18..71da6e3e94886 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
+++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
@@ -7,4 +8,3 @@ CONFIG_PREEMPT_DYNAMIC=n
 CONFIG_RCU_TRACE=n
 CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
-CONFIG_PREEMPT_COUNT=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02 b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
index 2f9fcffff5ae3..dd2bd4e08da4e 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
index bd5ed7b0da5f0..2be53bf60d65b 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
@@ -1,9 +1,9 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
-CONFIG_PREEMPT_LAZY=n
 #CHECK#CONFIG_TINY_RCU=y
 CONFIG_HZ_PERIODIC=n
 CONFIG_NO_HZ_IDLE=y
@@ -12,4 +12,3 @@ CONFIG_RCU_TRACE=n
 #CHECK#CONFIG_RCU_STALL_COMMON=n
 CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
-CONFIG_PREEMPT_COUNT=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
index 30439f6fc20e6..be8860342ef71 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
@@ -1,5 +1,6 @@
 CONFIG_SMP=n
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
index 18efab346381a..8fb124c28f283 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
@@ -1,7 +1,8 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=5
 CONFIG_HOTPLUG_CPU=y
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
index 34aee1acb8662..ac857d5bcb222 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
@@ -1,11 +1,12 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
+CONFIG_PREEMPT_LAZY=y
 CONFIG_PREEMPT_NONE=n
-CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
-CONFIG_PREEMPT_LAZY=n
 #CHECK#CONFIG_TREE_RCU=y
+#CHECK#CONFIG_PREEMPT_RCU=n
 CONFIG_HZ_PERIODIC=n
 CONFIG_NO_HZ_IDLE=n
 CONFIG_NO_HZ_FULL=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
index 0513aa33c32c4..61d15b1b54d16 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
@@ -1,9 +1,10 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_DYNAMIC=n
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
-CONFIG_PREEMPT_LAZY=n
 #CHECK#CONFIG_TREE_RCU=y
 CONFIG_HZ_PERIODIC=n
 CONFIG_NO_HZ_IDLE=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
index cc3ea23c76557..0e090bb68a0f6 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
@@ -1,10 +1,12 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_DYNAMIC=n
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
-CONFIG_PREEMPT_LAZY=n
 #CHECK#CONFIG_TREE_RCU=y
+#CHECK#CONFIG_PREEMPT_RCU=n
 CONFIG_HZ_PERIODIC=n
 CONFIG_NO_HZ_IDLE=y
 CONFIG_NO_HZ_FULL=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE10 b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
index 420632b030dc4..b2ce37861e71a 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE10
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
@@ -6,6 +6,7 @@ CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_PREEMPT_DYNAMIC=n
 #CHECK#CONFIG_TREE_RCU=y
+CONFIG_PREEMPT_RCU=n
 CONFIG_HZ_PERIODIC=n
 CONFIG_NO_HZ_IDLE=y
 CONFIG_NO_HZ_FULL=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
index 5d546efa68e83..696fba9968c60 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
@@ -1,6 +1,8 @@
 CONFIG_SMP=y
 CONFIG_NR_CPUS=8
-CONFIG_PREEMPT_NONE=y
+CONFIG_PREEMPT_DYNAMIC=n
+CONFIG_PREEMPT_LAZY=y
+CONFIG_PREEMPT_NONE=n
 CONFIG_PREEMPT_VOLUNTARY=n
 CONFIG_PREEMPT=n
 CONFIG_HZ_PERIODIC=n

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-05  0:01     ` [PATCH v3 " Paul E. McKenney
@ 2026-03-05 17:53       ` Joel Fernandes
  2026-03-05 19:08         ` Paul E. McKenney
  2026-03-05 18:22       ` Boqun Feng
  1 sibling, 1 reply; 16+ messages in thread
From: Joel Fernandes @ 2026-03-05 17:53 UTC (permalink / raw)
  To: paulmck, rcu; +Cc: linux-kernel, kernel-team, rostedt, Boqun Feng



On 3/4/2026 7:01 PM, Paul E. McKenney wrote:
> As of v7.0-rc1, architectures that support preemption, including x86 and
> arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
> Attempting to build kernels with these two Kconfig options results in
> .config errors.  This commit therefore switches such rcutorture scenarios
> to CONFIG_PREEMPT_LAZY.
> 
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> 
> ---
> 
> Changes since v2:
> 
> o	Fold in c69ac5693540 ("rcutorture: Adjust scenarios for default
> 	lazy preemption")
> 
> Changes since v1:
> 
> o	Add CONFIG_PREEMPT_DYNAMIC=n in order to test non-preemptible RCU.
> 
> o	Remove CONFIG_PREEMPT_COUNT=n because it conflicts with
> 	CONFIG_PREEMPT_LAZY=y.
> 
> o	Remove some stray conflicting CONFIG_PREEMPT_LAZY=n instances.
> 
[...]
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> index 34aee1acb8662..ac857d5bcb222 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> @@ -1,11 +1,12 @@
>  CONFIG_SMP=y
>  CONFIG_NR_CPUS=8
> +CONFIG_PREEMPT_LAZY=y
>  CONFIG_PREEMPT_NONE=n
> -CONFIG_PREEMPT_VOLUNTARY=y
> +CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_PREEMPT_DYNAMIC=n
> -CONFIG_PREEMPT_LAZY=n
>  #CHECK#CONFIG_TREE_RCU=y
> +#CHECK#CONFIG_PREEMPT_RCU=n

nit: Let us add this #CHECK# to the other configs you changed too? Otherwise it
is a bit confusing because it took some digging to clearly see that
PREEMPT_DYNAMIC=n and PREEMPT_LAZY=y implies CONFIG_PREEMPT_RCU=n ;-)

Otherwise, I could not find any other flaws in the approach and it makes sense, so:
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com>

Boqun, you will be taking this through the 7.0-rc tree right? So that 7.0
release tests don't fail.

Also I will drop the 2 related rcutorture patches for 7.1 and rebase on top of a
7.0-rc fixes branch Boqun might be creating.

Thanks!

--
Joel Fernandes

[...]


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-05  0:01     ` [PATCH v3 " Paul E. McKenney
  2026-03-05 17:53       ` Joel Fernandes
@ 2026-03-05 18:22       ` Boqun Feng
  2026-03-05 19:06         ` Paul E. McKenney
  1 sibling, 1 reply; 16+ messages in thread
From: Boqun Feng @ 2026-03-05 18:22 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: rcu, linux-kernel, kernel-team, rostedt

Hi Paul,

On Wed, Mar 04, 2026 at 04:01:19PM -0800, Paul E. McKenney wrote:
> As of v7.0-rc1, architectures that support preemption, including x86 and
> arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
> Attempting to build kernels with these two Kconfig options results in
> .config errors.  This commit therefore switches such rcutorture scenarios
> to CONFIG_PREEMPT_LAZY.
> 
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> 
> ---
> 
> Changes since v2:
> 
> o	Fold in c69ac5693540 ("rcutorture: Adjust scenarios for default
> 	lazy preemption")
> 

I'm not sure I got what the "Fold" here means? I think you didn't do the
fold? Because..

> Changes since v1:
> 
> o	Add CONFIG_PREEMPT_DYNAMIC=n in order to test non-preemptible RCU.
> 
> o	Remove CONFIG_PREEMPT_COUNT=n because it conflicts with
> 	CONFIG_PREEMPT_LAZY=y.
> 
> o	Remove some stray conflicting CONFIG_PREEMPT_LAZY=n instances.
> 
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
> index 07f5e0a70ae70..f943cdfb0a741 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
> @@ -2,7 +2,9 @@ CONFIG_RCU_TRACE=n
>  CONFIG_SMP=y
>  CONFIG_NR_CPUS=4
>  CONFIG_HOTPLUG_CPU=y
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_DYNAMIC=n
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  #CHECK#CONFIG_RCU_EXPERT=n
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
> index c70cf0405f248..06e4d1030279c 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
> @@ -1,5 +1,6 @@
>  CONFIG_SMP=n
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_PREEMPT_DYNAMIC=n
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
> index bc9eeabaa1b18..71da6e3e94886 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
> @@ -1,5 +1,6 @@
>  CONFIG_SMP=n
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_PREEMPT_DYNAMIC=n
> @@ -7,4 +8,3 @@ CONFIG_PREEMPT_DYNAMIC=n
>  CONFIG_RCU_TRACE=n
>  CONFIG_DEBUG_LOCK_ALLOC=n
>  CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
> -CONFIG_PREEMPT_COUNT=n
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02 b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
> index 2f9fcffff5ae3..dd2bd4e08da4e 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
> @@ -1,5 +1,6 @@
>  CONFIG_SMP=n
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_PREEMPT_DYNAMIC=n
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> index bd5ed7b0da5f0..2be53bf60d65b 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> @@ -1,9 +1,9 @@
>  CONFIG_SMP=n
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_PREEMPT_DYNAMIC=n
> -CONFIG_PREEMPT_LAZY=n

This is the line that was introduced by the said commit, hence this
patch is still separate from that commit I think?

Regards,
Boqun

>  #CHECK#CONFIG_TINY_RCU=y
>  CONFIG_HZ_PERIODIC=n
>  CONFIG_NO_HZ_IDLE=y
> @@ -12,4 +12,3 @@ CONFIG_RCU_TRACE=n
>  #CHECK#CONFIG_RCU_STALL_COMMON=n
>  CONFIG_DEBUG_LOCK_ALLOC=n
>  CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
> -CONFIG_PREEMPT_COUNT=n
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> index 30439f6fc20e6..be8860342ef71 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> @@ -1,5 +1,6 @@
>  CONFIG_SMP=n
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_PREEMPT_DYNAMIC=n
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> index 18efab346381a..8fb124c28f283 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> @@ -1,7 +1,8 @@
>  CONFIG_SMP=y
>  CONFIG_NR_CPUS=5
>  CONFIG_HOTPLUG_CPU=y
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_PREEMPT_DYNAMIC=n
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> index 34aee1acb8662..ac857d5bcb222 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> @@ -1,11 +1,12 @@
>  CONFIG_SMP=y
>  CONFIG_NR_CPUS=8
> +CONFIG_PREEMPT_LAZY=y
>  CONFIG_PREEMPT_NONE=n
> -CONFIG_PREEMPT_VOLUNTARY=y
> +CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_PREEMPT_DYNAMIC=n
> -CONFIG_PREEMPT_LAZY=n
>  #CHECK#CONFIG_TREE_RCU=y
> +#CHECK#CONFIG_PREEMPT_RCU=n
>  CONFIG_HZ_PERIODIC=n
>  CONFIG_NO_HZ_IDLE=n
>  CONFIG_NO_HZ_FULL=y
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> index 0513aa33c32c4..61d15b1b54d16 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> @@ -1,9 +1,10 @@
>  CONFIG_SMP=y
>  CONFIG_NR_CPUS=8
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_DYNAMIC=n
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
> -CONFIG_PREEMPT_LAZY=n
>  #CHECK#CONFIG_TREE_RCU=y
>  CONFIG_HZ_PERIODIC=n
>  CONFIG_NO_HZ_IDLE=y
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> index cc3ea23c76557..0e090bb68a0f6 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> @@ -1,10 +1,12 @@
>  CONFIG_SMP=y
>  CONFIG_NR_CPUS=8
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_DYNAMIC=n
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
> -CONFIG_PREEMPT_LAZY=n
>  #CHECK#CONFIG_TREE_RCU=y
> +#CHECK#CONFIG_PREEMPT_RCU=n
>  CONFIG_HZ_PERIODIC=n
>  CONFIG_NO_HZ_IDLE=y
>  CONFIG_NO_HZ_FULL=n
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE10 b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> index 420632b030dc4..b2ce37861e71a 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> @@ -6,6 +6,7 @@ CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_PREEMPT_DYNAMIC=n
>  #CHECK#CONFIG_TREE_RCU=y
> +CONFIG_PREEMPT_RCU=n
>  CONFIG_HZ_PERIODIC=n
>  CONFIG_NO_HZ_IDLE=y
>  CONFIG_NO_HZ_FULL=n
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> index 5d546efa68e83..696fba9968c60 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> @@ -1,6 +1,8 @@
>  CONFIG_SMP=y
>  CONFIG_NR_CPUS=8
> -CONFIG_PREEMPT_NONE=y
> +CONFIG_PREEMPT_DYNAMIC=n
> +CONFIG_PREEMPT_LAZY=y
> +CONFIG_PREEMPT_NONE=n
>  CONFIG_PREEMPT_VOLUNTARY=n
>  CONFIG_PREEMPT=n
>  CONFIG_HZ_PERIODIC=n
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-05 18:22       ` Boqun Feng
@ 2026-03-05 19:06         ` Paul E. McKenney
  2026-03-05 19:59           ` Boqun Feng
  0 siblings, 1 reply; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-05 19:06 UTC (permalink / raw)
  To: Boqun Feng; +Cc: rcu, linux-kernel, kernel-team, rostedt

On Thu, Mar 05, 2026 at 10:22:35AM -0800, Boqun Feng wrote:
> Hi Paul,
> 
> On Wed, Mar 04, 2026 at 04:01:19PM -0800, Paul E. McKenney wrote:
> > As of v7.0-rc1, architectures that support preemption, including x86 and
> > arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
> > Attempting to build kernels with these two Kconfig options results in
> > .config errors.  This commit therefore switches such rcutorture scenarios
> > to CONFIG_PREEMPT_LAZY.
> > 
> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > 
> > ---
> > 
> > Changes since v2:
> > 
> > o	Fold in c69ac5693540 ("rcutorture: Adjust scenarios for default
> > 	lazy preemption")
> > 
> 
> I'm not sure I got what the "Fold" here means? I think you didn't do the
> fold? Because..
> 
> > Changes since v1:
> > 
> > o	Add CONFIG_PREEMPT_DYNAMIC=n in order to test non-preemptible RCU.
> > 
> > o	Remove CONFIG_PREEMPT_COUNT=n because it conflicts with
> > 	CONFIG_PREEMPT_LAZY=y.
> > 
> > o	Remove some stray conflicting CONFIG_PREEMPT_LAZY=n instances.
> > 
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
> > index 07f5e0a70ae70..f943cdfb0a741 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N
> > @@ -2,7 +2,9 @@ CONFIG_RCU_TRACE=n
> >  CONFIG_SMP=y
> >  CONFIG_NR_CPUS=4
> >  CONFIG_HOTPLUG_CPU=y
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_DYNAMIC=n
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  #CHECK#CONFIG_RCU_EXPERT=n
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
> > index c70cf0405f248..06e4d1030279c 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-T
> > @@ -1,5 +1,6 @@
> >  CONFIG_SMP=n
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_PREEMPT_DYNAMIC=n
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
> > index bc9eeabaa1b18..71da6e3e94886 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-U
> > @@ -1,5 +1,6 @@
> >  CONFIG_SMP=n
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_PREEMPT_DYNAMIC=n
> > @@ -7,4 +8,3 @@ CONFIG_PREEMPT_DYNAMIC=n
> >  CONFIG_RCU_TRACE=n
> >  CONFIG_DEBUG_LOCK_ALLOC=n
> >  CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
> > -CONFIG_PREEMPT_COUNT=n
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02 b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
> > index 2f9fcffff5ae3..dd2bd4e08da4e 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TASKS02
> > @@ -1,5 +1,6 @@
> >  CONFIG_SMP=n
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_PREEMPT_DYNAMIC=n
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > index bd5ed7b0da5f0..2be53bf60d65b 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > @@ -1,9 +1,9 @@
> >  CONFIG_SMP=n
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_PREEMPT_DYNAMIC=n
> > -CONFIG_PREEMPT_LAZY=n
> 
> This is the line that was introduced by the said commit, hence this
> patch is still separate from that commit I think?

I *think* I have them folded/squashed correctly.

I pushed this out to my -rcu "dev" branch.  The relevant commits are,
in order of increasing time of commit:

c69ac5693540 ("rcutorture: Adjust scenarios for default lazy preemption")
86126bc6d7ad ("rcutorture: Update due to x86 not supporting none/voluntary preemption")
5631c1565493 ("Revert "rcutorture: Adjust scenarios for default lazy preemption"")
6fd95cee7427 ("Revert "rcutorture: Update due to x86 not supporting none/voluntary preemption"")
17c52d7b31a1 ("rcutorture: Update due to x86 not supporting none/voluntary preemption")

The first was applied by Joel to the shared RCU tree, the second is in my
-rcu tree, and the last three are consecutive commits in my -rcu tree.
The following command gives no output, which I was interpreting as my
having done it correctly.  But please double-check.

git diff 5631c1565493^..17c52d7b31a1

							Thanx, Paul

> Regards,
> Boqun
> 
> >  #CHECK#CONFIG_TINY_RCU=y
> >  CONFIG_HZ_PERIODIC=n
> >  CONFIG_NO_HZ_IDLE=y
> > @@ -12,4 +12,3 @@ CONFIG_RCU_TRACE=n
> >  #CHECK#CONFIG_RCU_STALL_COMMON=n
> >  CONFIG_DEBUG_LOCK_ALLOC=n
> >  CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
> > -CONFIG_PREEMPT_COUNT=n
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > index 30439f6fc20e6..be8860342ef71 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > @@ -1,5 +1,6 @@
> >  CONFIG_SMP=n
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_PREEMPT_DYNAMIC=n
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > index 18efab346381a..8fb124c28f283 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > @@ -1,7 +1,8 @@
> >  CONFIG_SMP=y
> >  CONFIG_NR_CPUS=5
> >  CONFIG_HOTPLUG_CPU=y
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_PREEMPT_DYNAMIC=n
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > index 34aee1acb8662..ac857d5bcb222 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > @@ -1,11 +1,12 @@
> >  CONFIG_SMP=y
> >  CONFIG_NR_CPUS=8
> > +CONFIG_PREEMPT_LAZY=y
> >  CONFIG_PREEMPT_NONE=n
> > -CONFIG_PREEMPT_VOLUNTARY=y
> > +CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_PREEMPT_DYNAMIC=n
> > -CONFIG_PREEMPT_LAZY=n
> >  #CHECK#CONFIG_TREE_RCU=y
> > +#CHECK#CONFIG_PREEMPT_RCU=n
> >  CONFIG_HZ_PERIODIC=n
> >  CONFIG_NO_HZ_IDLE=n
> >  CONFIG_NO_HZ_FULL=y
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > index 0513aa33c32c4..61d15b1b54d16 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > @@ -1,9 +1,10 @@
> >  CONFIG_SMP=y
> >  CONFIG_NR_CPUS=8
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_DYNAMIC=n
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> > -CONFIG_PREEMPT_LAZY=n
> >  #CHECK#CONFIG_TREE_RCU=y
> >  CONFIG_HZ_PERIODIC=n
> >  CONFIG_NO_HZ_IDLE=y
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > index cc3ea23c76557..0e090bb68a0f6 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > @@ -1,10 +1,12 @@
> >  CONFIG_SMP=y
> >  CONFIG_NR_CPUS=8
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_DYNAMIC=n
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> > -CONFIG_PREEMPT_LAZY=n
> >  #CHECK#CONFIG_TREE_RCU=y
> > +#CHECK#CONFIG_PREEMPT_RCU=n
> >  CONFIG_HZ_PERIODIC=n
> >  CONFIG_NO_HZ_IDLE=y
> >  CONFIG_NO_HZ_FULL=n
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE10 b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > index 420632b030dc4..b2ce37861e71a 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > @@ -6,6 +6,7 @@ CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_PREEMPT_DYNAMIC=n
> >  #CHECK#CONFIG_TREE_RCU=y
> > +CONFIG_PREEMPT_RCU=n
> >  CONFIG_HZ_PERIODIC=n
> >  CONFIG_NO_HZ_IDLE=y
> >  CONFIG_NO_HZ_FULL=n
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > index 5d546efa68e83..696fba9968c60 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > @@ -1,6 +1,8 @@
> >  CONFIG_SMP=y
> >  CONFIG_NR_CPUS=8
> > -CONFIG_PREEMPT_NONE=y
> > +CONFIG_PREEMPT_DYNAMIC=n
> > +CONFIG_PREEMPT_LAZY=y
> > +CONFIG_PREEMPT_NONE=n
> >  CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_HZ_PERIODIC=n
> > 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-05 17:53       ` Joel Fernandes
@ 2026-03-05 19:08         ` Paul E. McKenney
  0 siblings, 0 replies; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-05 19:08 UTC (permalink / raw)
  To: Joel Fernandes; +Cc: rcu, linux-kernel, kernel-team, rostedt, Boqun Feng

On Thu, Mar 05, 2026 at 12:53:48PM -0500, Joel Fernandes wrote:
> 
> 
> On 3/4/2026 7:01 PM, Paul E. McKenney wrote:
> > As of v7.0-rc1, architectures that support preemption, including x86 and
> > arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
> > Attempting to build kernels with these two Kconfig options results in
> > .config errors.  This commit therefore switches such rcutorture scenarios
> > to CONFIG_PREEMPT_LAZY.
> > 
> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > 
> > ---
> > 
> > Changes since v2:
> > 
> > o	Fold in c69ac5693540 ("rcutorture: Adjust scenarios for default
> > 	lazy preemption")
> > 
> > Changes since v1:
> > 
> > o	Add CONFIG_PREEMPT_DYNAMIC=n in order to test non-preemptible RCU.
> > 
> > o	Remove CONFIG_PREEMPT_COUNT=n because it conflicts with
> > 	CONFIG_PREEMPT_LAZY=y.
> > 
> > o	Remove some stray conflicting CONFIG_PREEMPT_LAZY=n instances.
> > 
> [...]
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > index 34aee1acb8662..ac857d5bcb222 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > @@ -1,11 +1,12 @@
> >  CONFIG_SMP=y
> >  CONFIG_NR_CPUS=8
> > +CONFIG_PREEMPT_LAZY=y
> >  CONFIG_PREEMPT_NONE=n
> > -CONFIG_PREEMPT_VOLUNTARY=y
> > +CONFIG_PREEMPT_VOLUNTARY=n
> >  CONFIG_PREEMPT=n
> >  CONFIG_PREEMPT_DYNAMIC=n
> > -CONFIG_PREEMPT_LAZY=n
> >  #CHECK#CONFIG_TREE_RCU=y
> > +#CHECK#CONFIG_PREEMPT_RCU=n
> 
> nit: Let us add this #CHECK# to the other configs you changed too? Otherwise it
> is a bit confusing because it took some digging to clearly see that
> PREEMPT_DYNAMIC=n and PREEMPT_LAZY=y implies CONFIG_PREEMPT_RCU=n ;-)

Tell me about it.  ;-)

I will add "#CHECK#CONFIG_PREEMPT_RCU=n" as a separate non-urgent commit.

> Otherwise, I could not find any other flaws in the approach and it makes sense, so:
> Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com>
> 
> Boqun, you will be taking this through the 7.0-rc tree right? So that 7.0
> release tests don't fail.

Unless I hear otherwise, I will assume that Boqun will apply your
Reviewed-by.  Easy for me to do, just no point in its being done twice.

> Also I will drop the 2 related rcutorture patches for 7.1 and rebase on top of a
> 7.0-rc fixes branch Boqun might be creating.

Sounds good, and thank you both!

								Thanx, Paul

> Thanks!
> 
> --
> Joel Fernandes
> 
> [...]
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-05 19:06         ` Paul E. McKenney
@ 2026-03-05 19:59           ` Boqun Feng
  2026-03-05 20:11             ` Paul E. McKenney
  0 siblings, 1 reply; 16+ messages in thread
From: Boqun Feng @ 2026-03-05 19:59 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: rcu, linux-kernel, kernel-team, rostedt

On Thu, Mar 05, 2026 at 11:06:25AM -0800, Paul E. McKenney wrote:
> On Thu, Mar 05, 2026 at 10:22:35AM -0800, Boqun Feng wrote:
[...]
> > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > index bd5ed7b0da5f0..2be53bf60d65b 100644
> > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > @@ -1,9 +1,9 @@
> > >  CONFIG_SMP=n
> > > -CONFIG_PREEMPT_NONE=y
> > > +CONFIG_PREEMPT_LAZY=y
> > > +CONFIG_PREEMPT_NONE=n
> > >  CONFIG_PREEMPT_VOLUNTARY=n
> > >  CONFIG_PREEMPT=n
> > >  CONFIG_PREEMPT_DYNAMIC=n
> > > -CONFIG_PREEMPT_LAZY=n
> > 
> > This is the line that was introduced by the said commit, hence this
> > patch is still separate from that commit I think?
> 
> I *think* I have them folded/squashed correctly.
> 
> I pushed this out to my -rcu "dev" branch.  The relevant commits are,
> in order of increasing time of commit:
> 
> c70ac5693540 ("rcutorture: Adjust scenarios for default lazy preemption")

It's the commit c69ac5693540 in your "dev" branch, right?

> 86126bc6d7ad ("rcutorture: Update due to x86 not supporting none/voluntary preemption")
> 5631c1565493 ("Revert "rcutorture: Adjust scenarios for default lazy preemption"")
> 6fd95cee7427 ("Revert "rcutorture: Update due to x86 not supporting none/voluntary preemption"")

The thing is the combination of the above 4 didn't introduce a clean
base in rcu/{TINY01, TREE04, TREE05, TREE06}, as shown by:

	git diff 'c69ac5693540^..6fd95cee7427' -- tools/testing/selftests/rcutorture/configs/rcu/{TINY01,TREE04,TREE05,TREE06}

I took a look, it's because commit 86126bc6d7ad ("rcutorture: Update due
to x86 not supporting none/voluntary preemption") was based on commit
c69ac5693540, and it moved a few CONFIG_PREEMPT_LAZY configs, and when
it got reverted in commit 6fd95cee7427, these configs were moved back so
commit 5631c1565493's revert was partially reverted.

> 17c52d7b31a1 ("rcutorture: Update due to x86 not supporting none/voluntary preemption")
> 

A simple way to verify would be try `cherry-pick` this commit onto
7.0-rc1.

Regards,
Boqun

> The first was applied by Joel to the shared RCU tree, the second is in my
> -rcu tree, and the last three are consecutive commits in my -rcu tree.
> The following command gives no output, which I was interpreting as my
> having done it correctly.  But please double-check.
> 
> git diff 5631c1565493^..17c52d7b31a1
> 
> 							Thanx, Paul
> 
> > Regards,
> > Boqun
> > 
> > >  #CHECK#CONFIG_TINY_RCU=y
> > >  CONFIG_HZ_PERIODIC=n
> > >  CONFIG_NO_HZ_IDLE=y
> > > @@ -12,4 +12,3 @@ CONFIG_RCU_TRACE=n
> > >  #CHECK#CONFIG_RCU_STALL_COMMON=n
> > >  CONFIG_DEBUG_LOCK_ALLOC=n
> > >  CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
> > > -CONFIG_PREEMPT_COUNT=n
> > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > index 30439f6fc20e6..be8860342ef71 100644
> > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > @@ -1,5 +1,6 @@
> > >  CONFIG_SMP=n
> > > -CONFIG_PREEMPT_NONE=y
> > > +CONFIG_PREEMPT_LAZY=y
> > > +CONFIG_PREEMPT_NONE=n
> > >  CONFIG_PREEMPT_VOLUNTARY=n
> > >  CONFIG_PREEMPT=n
> > >  CONFIG_PREEMPT_DYNAMIC=n
> > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > index 18efab346381a..8fb124c28f283 100644
> > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > @@ -1,7 +1,8 @@
> > >  CONFIG_SMP=y
> > >  CONFIG_NR_CPUS=5
> > >  CONFIG_HOTPLUG_CPU=y
> > > -CONFIG_PREEMPT_NONE=y
> > > +CONFIG_PREEMPT_LAZY=y
> > > +CONFIG_PREEMPT_NONE=n
> > >  CONFIG_PREEMPT_VOLUNTARY=n
> > >  CONFIG_PREEMPT=n
> > >  CONFIG_PREEMPT_DYNAMIC=n
> > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > index 34aee1acb8662..ac857d5bcb222 100644
> > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > @@ -1,11 +1,12 @@
> > >  CONFIG_SMP=y
> > >  CONFIG_NR_CPUS=8
> > > +CONFIG_PREEMPT_LAZY=y
> > >  CONFIG_PREEMPT_NONE=n
> > > -CONFIG_PREEMPT_VOLUNTARY=y
> > > +CONFIG_PREEMPT_VOLUNTARY=n
> > >  CONFIG_PREEMPT=n
> > >  CONFIG_PREEMPT_DYNAMIC=n
> > > -CONFIG_PREEMPT_LAZY=n
> > >  #CHECK#CONFIG_TREE_RCU=y
> > > +#CHECK#CONFIG_PREEMPT_RCU=n
> > >  CONFIG_HZ_PERIODIC=n
> > >  CONFIG_NO_HZ_IDLE=n
> > >  CONFIG_NO_HZ_FULL=y
> > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > index 0513aa33c32c4..61d15b1b54d16 100644
> > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > @@ -1,9 +1,10 @@
> > >  CONFIG_SMP=y
> > >  CONFIG_NR_CPUS=8
> > > -CONFIG_PREEMPT_NONE=y
> > > +CONFIG_PREEMPT_DYNAMIC=n
> > > +CONFIG_PREEMPT_LAZY=y
> > > +CONFIG_PREEMPT_NONE=n
> > >  CONFIG_PREEMPT_VOLUNTARY=n
> > >  CONFIG_PREEMPT=n
> > > -CONFIG_PREEMPT_LAZY=n
> > >  #CHECK#CONFIG_TREE_RCU=y
> > >  CONFIG_HZ_PERIODIC=n
> > >  CONFIG_NO_HZ_IDLE=y
> > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > index cc3ea23c76557..0e090bb68a0f6 100644
> > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > @@ -1,10 +1,12 @@
> > >  CONFIG_SMP=y
> > >  CONFIG_NR_CPUS=8
> > > -CONFIG_PREEMPT_NONE=y
> > > +CONFIG_PREEMPT_DYNAMIC=n
> > > +CONFIG_PREEMPT_LAZY=y
> > > +CONFIG_PREEMPT_NONE=n
> > >  CONFIG_PREEMPT_VOLUNTARY=n
> > >  CONFIG_PREEMPT=n
> > > -CONFIG_PREEMPT_LAZY=n
> > >  #CHECK#CONFIG_TREE_RCU=y
> > > +#CHECK#CONFIG_PREEMPT_RCU=n
> > >  CONFIG_HZ_PERIODIC=n
> > >  CONFIG_NO_HZ_IDLE=y
> > >  CONFIG_NO_HZ_FULL=n
> > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE10 b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > index 420632b030dc4..b2ce37861e71a 100644
> > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > @@ -6,6 +6,7 @@ CONFIG_PREEMPT_VOLUNTARY=n
> > >  CONFIG_PREEMPT=n
> > >  CONFIG_PREEMPT_DYNAMIC=n
> > >  #CHECK#CONFIG_TREE_RCU=y
> > > +CONFIG_PREEMPT_RCU=n
> > >  CONFIG_HZ_PERIODIC=n
> > >  CONFIG_NO_HZ_IDLE=y
> > >  CONFIG_NO_HZ_FULL=n
> > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > index 5d546efa68e83..696fba9968c60 100644
> > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > @@ -1,6 +1,8 @@
> > >  CONFIG_SMP=y
> > >  CONFIG_NR_CPUS=8
> > > -CONFIG_PREEMPT_NONE=y
> > > +CONFIG_PREEMPT_DYNAMIC=n
> > > +CONFIG_PREEMPT_LAZY=y
> > > +CONFIG_PREEMPT_NONE=n
> > >  CONFIG_PREEMPT_VOLUNTARY=n
> > >  CONFIG_PREEMPT=n
> > >  CONFIG_HZ_PERIODIC=n
> > > 
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-05 19:59           ` Boqun Feng
@ 2026-03-05 20:11             ` Paul E. McKenney
  2026-03-05 21:08               ` Boqun Feng
  0 siblings, 1 reply; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-05 20:11 UTC (permalink / raw)
  To: Boqun Feng; +Cc: rcu, linux-kernel, kernel-team, rostedt

On Thu, Mar 05, 2026 at 11:59:35AM -0800, Boqun Feng wrote:
> On Thu, Mar 05, 2026 at 11:06:25AM -0800, Paul E. McKenney wrote:
> > On Thu, Mar 05, 2026 at 10:22:35AM -0800, Boqun Feng wrote:
> [...]
> > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > > index bd5ed7b0da5f0..2be53bf60d65b 100644
> > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > > @@ -1,9 +1,9 @@
> > > >  CONFIG_SMP=n
> > > > -CONFIG_PREEMPT_NONE=y
> > > > +CONFIG_PREEMPT_LAZY=y
> > > > +CONFIG_PREEMPT_NONE=n
> > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > >  CONFIG_PREEMPT=n
> > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > -CONFIG_PREEMPT_LAZY=n
> > > 
> > > This is the line that was introduced by the said commit, hence this
> > > patch is still separate from that commit I think?
> > 
> > I *think* I have them folded/squashed correctly.
> > 
> > I pushed this out to my -rcu "dev" branch.  The relevant commits are,
> > in order of increasing time of commit:
> > 
> > c70ac5693540 ("rcutorture: Adjust scenarios for default lazy preemption")
> 
> It's the commit c69ac5693540 in your "dev" branch, right?

Right you are!

> > 86126bc6d7ad ("rcutorture: Update due to x86 not supporting none/voluntary preemption")
> > 5631c1565493 ("Revert "rcutorture: Adjust scenarios for default lazy preemption"")
> > 6fd95cee7427 ("Revert "rcutorture: Update due to x86 not supporting none/voluntary preemption"")
> 
> The thing is the combination of the above 4 didn't introduce a clean
> base in rcu/{TINY01, TREE04, TREE05, TREE06}, as shown by:
> 
> 	git diff 'c69ac5693540^..6fd95cee7427' -- tools/testing/selftests/rcutorture/configs/rcu/{TINY01,TREE04,TREE05,TREE06}
> 
> I took a look, it's because commit 86126bc6d7ad ("rcutorture: Update due
> to x86 not supporting none/voluntary preemption") was based on commit
> c69ac5693540, and it moved a few CONFIG_PREEMPT_LAZY configs, and when
> it got reverted in commit 6fd95cee7427, these configs were moved back so
> commit 5631c1565493's revert was partially reverted.
> 
> > 17c52d7b31a1 ("rcutorture: Update due to x86 not supporting none/voluntary preemption")
> > 
> 
> A simple way to verify would be try `cherry-pick` this commit onto
> 7.0-rc1.

Like this?

$ git reset --hard v7.0-rc1
$ git cherry-pick 17c52d7b31a1fbec84172d279b3ab0149bc71627
Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TINY01
Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE04
Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE05
Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE06
[detached HEAD 551d9b94e2c80] rcutorture: Update due to x86 not supporting none/voluntary preemption
 Date: Tue Mar 3 11:28:02 2026 -0800
 12 files changed, 29 insertions(+), 13 deletions(-)
$ git branch lazy-1
$ git checkout v7.0-rc1
Previous HEAD position was 551d9b94e2c80 rcutorture: Update due to x86 not supporting none/voluntary preemption
HEAD is now at 6de23f81a5e08 Linux 7.0-rc1
$ git cherry-pick c69ac56935401534120ef1e40335090b973a97d2
[detached HEAD da3c99da7a639] rcutorture: Adjust scenarios for default lazy preemption
 Date: Wed Jan 21 10:40:30 2026 -0800
 5 files changed, 7 insertions(+)
1$ git cherry-pick 86126bc6d7ad5af56c0bf8beeac12f8feaffa866
[detached HEAD 824577abfb3b0] rcutorture: Update due to x86 not supporting none/voluntary preemption
 Date: Tue Mar 3 11:28:02 2026 -0800
 11 files changed, 26 insertions(+), 17 deletions(-)
$ git diff lazy-1

Still no diff output.  What am I missing?

							Thanx, Paul

> Regards,
> Boqun
> 
> > The first was applied by Joel to the shared RCU tree, the second is in my
> > -rcu tree, and the last three are consecutive commits in my -rcu tree.
> > The following command gives no output, which I was interpreting as my
> > having done it correctly.  But please double-check.
> > 
> > git diff 5631c1565493^..17c52d7b31a1
> > 
> > 							Thanx, Paul
> > 
> > > Regards,
> > > Boqun
> > > 
> > > >  #CHECK#CONFIG_TINY_RCU=y
> > > >  CONFIG_HZ_PERIODIC=n
> > > >  CONFIG_NO_HZ_IDLE=y
> > > > @@ -12,4 +12,3 @@ CONFIG_RCU_TRACE=n
> > > >  #CHECK#CONFIG_RCU_STALL_COMMON=n
> > > >  CONFIG_DEBUG_LOCK_ALLOC=n
> > > >  CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
> > > > -CONFIG_PREEMPT_COUNT=n
> > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > > index 30439f6fc20e6..be8860342ef71 100644
> > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > > @@ -1,5 +1,6 @@
> > > >  CONFIG_SMP=n
> > > > -CONFIG_PREEMPT_NONE=y
> > > > +CONFIG_PREEMPT_LAZY=y
> > > > +CONFIG_PREEMPT_NONE=n
> > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > >  CONFIG_PREEMPT=n
> > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > > index 18efab346381a..8fb124c28f283 100644
> > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > > @@ -1,7 +1,8 @@
> > > >  CONFIG_SMP=y
> > > >  CONFIG_NR_CPUS=5
> > > >  CONFIG_HOTPLUG_CPU=y
> > > > -CONFIG_PREEMPT_NONE=y
> > > > +CONFIG_PREEMPT_LAZY=y
> > > > +CONFIG_PREEMPT_NONE=n
> > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > >  CONFIG_PREEMPT=n
> > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > > index 34aee1acb8662..ac857d5bcb222 100644
> > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > > @@ -1,11 +1,12 @@
> > > >  CONFIG_SMP=y
> > > >  CONFIG_NR_CPUS=8
> > > > +CONFIG_PREEMPT_LAZY=y
> > > >  CONFIG_PREEMPT_NONE=n
> > > > -CONFIG_PREEMPT_VOLUNTARY=y
> > > > +CONFIG_PREEMPT_VOLUNTARY=n
> > > >  CONFIG_PREEMPT=n
> > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > -CONFIG_PREEMPT_LAZY=n
> > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > +#CHECK#CONFIG_PREEMPT_RCU=n
> > > >  CONFIG_HZ_PERIODIC=n
> > > >  CONFIG_NO_HZ_IDLE=n
> > > >  CONFIG_NO_HZ_FULL=y
> > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > > index 0513aa33c32c4..61d15b1b54d16 100644
> > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > > @@ -1,9 +1,10 @@
> > > >  CONFIG_SMP=y
> > > >  CONFIG_NR_CPUS=8
> > > > -CONFIG_PREEMPT_NONE=y
> > > > +CONFIG_PREEMPT_DYNAMIC=n
> > > > +CONFIG_PREEMPT_LAZY=y
> > > > +CONFIG_PREEMPT_NONE=n
> > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > >  CONFIG_PREEMPT=n
> > > > -CONFIG_PREEMPT_LAZY=n
> > > >  #CHECK#CONFIG_TREE_RCU=y
> > > >  CONFIG_HZ_PERIODIC=n
> > > >  CONFIG_NO_HZ_IDLE=y
> > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > > index cc3ea23c76557..0e090bb68a0f6 100644
> > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > > @@ -1,10 +1,12 @@
> > > >  CONFIG_SMP=y
> > > >  CONFIG_NR_CPUS=8
> > > > -CONFIG_PREEMPT_NONE=y
> > > > +CONFIG_PREEMPT_DYNAMIC=n
> > > > +CONFIG_PREEMPT_LAZY=y
> > > > +CONFIG_PREEMPT_NONE=n
> > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > >  CONFIG_PREEMPT=n
> > > > -CONFIG_PREEMPT_LAZY=n
> > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > +#CHECK#CONFIG_PREEMPT_RCU=n
> > > >  CONFIG_HZ_PERIODIC=n
> > > >  CONFIG_NO_HZ_IDLE=y
> > > >  CONFIG_NO_HZ_FULL=n
> > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE10 b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > > index 420632b030dc4..b2ce37861e71a 100644
> > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > > @@ -6,6 +6,7 @@ CONFIG_PREEMPT_VOLUNTARY=n
> > > >  CONFIG_PREEMPT=n
> > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > +CONFIG_PREEMPT_RCU=n
> > > >  CONFIG_HZ_PERIODIC=n
> > > >  CONFIG_NO_HZ_IDLE=y
> > > >  CONFIG_NO_HZ_FULL=n
> > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > > index 5d546efa68e83..696fba9968c60 100644
> > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > > @@ -1,6 +1,8 @@
> > > >  CONFIG_SMP=y
> > > >  CONFIG_NR_CPUS=8
> > > > -CONFIG_PREEMPT_NONE=y
> > > > +CONFIG_PREEMPT_DYNAMIC=n
> > > > +CONFIG_PREEMPT_LAZY=y
> > > > +CONFIG_PREEMPT_NONE=n
> > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > >  CONFIG_PREEMPT=n
> > > >  CONFIG_HZ_PERIODIC=n
> > > > 
> > 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-05 20:11             ` Paul E. McKenney
@ 2026-03-05 21:08               ` Boqun Feng
  2026-03-05 23:24                 ` Paul E. McKenney
  0 siblings, 1 reply; 16+ messages in thread
From: Boqun Feng @ 2026-03-05 21:08 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: rcu, linux-kernel, kernel-team, rostedt

On Thu, Mar 05, 2026 at 12:11:46PM -0800, Paul E. McKenney wrote:
> On Thu, Mar 05, 2026 at 11:59:35AM -0800, Boqun Feng wrote:
> > On Thu, Mar 05, 2026 at 11:06:25AM -0800, Paul E. McKenney wrote:
> > > On Thu, Mar 05, 2026 at 10:22:35AM -0800, Boqun Feng wrote:
> > [...]
> > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > > > index bd5ed7b0da5f0..2be53bf60d65b 100644
> > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > > > @@ -1,9 +1,9 @@
> > > > >  CONFIG_SMP=n
> > > > > -CONFIG_PREEMPT_NONE=y
> > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > +CONFIG_PREEMPT_NONE=n
> > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > >  CONFIG_PREEMPT=n
> > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > > -CONFIG_PREEMPT_LAZY=n
> > > > 
> > > > This is the line that was introduced by the said commit, hence this
> > > > patch is still separate from that commit I think?
> > > 
> > > I *think* I have them folded/squashed correctly.
> > > 
> > > I pushed this out to my -rcu "dev" branch.  The relevant commits are,
> > > in order of increasing time of commit:
> > > 
> > > c70ac5693540 ("rcutorture: Adjust scenarios for default lazy preemption")
> > 
> > It's the commit c69ac5693540 in your "dev" branch, right?
> 
> Right you are!
> 
> > > 86126bc6d7ad ("rcutorture: Update due to x86 not supporting none/voluntary preemption")
> > > 5631c1565493 ("Revert "rcutorture: Adjust scenarios for default lazy preemption"")
> > > 6fd95cee7427 ("Revert "rcutorture: Update due to x86 not supporting none/voluntary preemption"")
> > 
> > The thing is the combination of the above 4 didn't introduce a clean
> > base in rcu/{TINY01, TREE04, TREE05, TREE06}, as shown by:
> > 
> > 	git diff 'c69ac5693540^..6fd95cee7427' -- tools/testing/selftests/rcutorture/configs/rcu/{TINY01,TREE04,TREE05,TREE06}
> > 
> > I took a look, it's because commit 86126bc6d7ad ("rcutorture: Update due
> > to x86 not supporting none/voluntary preemption") was based on commit
> > c69ac5693540, and it moved a few CONFIG_PREEMPT_LAZY configs, and when
> > it got reverted in commit 6fd95cee7427, these configs were moved back so
> > commit 5631c1565493's revert was partially reverted.
> > 
> > > 17c52d7b31a1 ("rcutorture: Update due to x86 not supporting none/voluntary preemption")
> > > 
> > 
> > A simple way to verify would be try `cherry-pick` this commit onto
> > 7.0-rc1.
> 
> Like this?
> 
> $ git reset --hard v7.0-rc1
> $ git cherry-pick 17c52d7b31a1fbec84172d279b3ab0149bc71627
> Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TINY01
> Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE04
> Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE05
> Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE06

Yeah, the delta is small enough so that 3-way auto-merging can handle
it. I will just apply with these resolution. Thanks!

> [detached HEAD 551d9b94e2c80] rcutorture: Update due to x86 not supporting none/voluntary preemption
>  Date: Tue Mar 3 11:28:02 2026 -0800
>  12 files changed, 29 insertions(+), 13 deletions(-)
> $ git branch lazy-1
> $ git checkout v7.0-rc1
> Previous HEAD position was 551d9b94e2c80 rcutorture: Update due to x86 not supporting none/voluntary preemption
> HEAD is now at 6de23f81a5e08 Linux 7.0-rc1
> $ git cherry-pick c69ac56935401534120ef1e40335090b973a97d2
> [detached HEAD da3c99da7a639] rcutorture: Adjust scenarios for default lazy preemption
>  Date: Wed Jan 21 10:40:30 2026 -0800
>  5 files changed, 7 insertions(+)
> 1$ git cherry-pick 86126bc6d7ad5af56c0bf8beeac12f8feaffa866
> [detached HEAD 824577abfb3b0] rcutorture: Update due to x86 not supporting none/voluntary preemption
>  Date: Tue Mar 3 11:28:02 2026 -0800
>  11 files changed, 26 insertions(+), 17 deletions(-)
> $ git diff lazy-1
> 
> Still no diff output.  What am I missing?
> 

Not important right now, but if you do:

	git range-diff 'lazy-1^..lazy-1' '17c52d7b31a1^..17c52d7b31a1'

you will see if I applied your v3 onto v7.0-rc1, I wouldn't end up
having the exact changes as the v3 has (some auto resolution happened).

Regards,
Boqun

> 							Thanx, Paul
> 
> > Regards,
> > Boqun
> > 
> > > The first was applied by Joel to the shared RCU tree, the second is in my
> > > -rcu tree, and the last three are consecutive commits in my -rcu tree.
> > > The following command gives no output, which I was interpreting as my
> > > having done it correctly.  But please double-check.
> > > 
> > > git diff 5631c1565493^..17c52d7b31a1
> > > 
> > > 							Thanx, Paul
> > > 
> > > > Regards,
> > > > Boqun
> > > > 
> > > > >  #CHECK#CONFIG_TINY_RCU=y
> > > > >  CONFIG_HZ_PERIODIC=n
> > > > >  CONFIG_NO_HZ_IDLE=y
> > > > > @@ -12,4 +12,3 @@ CONFIG_RCU_TRACE=n
> > > > >  #CHECK#CONFIG_RCU_STALL_COMMON=n
> > > > >  CONFIG_DEBUG_LOCK_ALLOC=n
> > > > >  CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
> > > > > -CONFIG_PREEMPT_COUNT=n
> > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > > > index 30439f6fc20e6..be8860342ef71 100644
> > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > > > @@ -1,5 +1,6 @@
> > > > >  CONFIG_SMP=n
> > > > > -CONFIG_PREEMPT_NONE=y
> > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > +CONFIG_PREEMPT_NONE=n
> > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > >  CONFIG_PREEMPT=n
> > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > > > index 18efab346381a..8fb124c28f283 100644
> > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > > > @@ -1,7 +1,8 @@
> > > > >  CONFIG_SMP=y
> > > > >  CONFIG_NR_CPUS=5
> > > > >  CONFIG_HOTPLUG_CPU=y
> > > > > -CONFIG_PREEMPT_NONE=y
> > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > +CONFIG_PREEMPT_NONE=n
> > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > >  CONFIG_PREEMPT=n
> > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > > > index 34aee1acb8662..ac857d5bcb222 100644
> > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > > > @@ -1,11 +1,12 @@
> > > > >  CONFIG_SMP=y
> > > > >  CONFIG_NR_CPUS=8
> > > > > +CONFIG_PREEMPT_LAZY=y
> > > > >  CONFIG_PREEMPT_NONE=n
> > > > > -CONFIG_PREEMPT_VOLUNTARY=y
> > > > > +CONFIG_PREEMPT_VOLUNTARY=n
> > > > >  CONFIG_PREEMPT=n
> > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > > -CONFIG_PREEMPT_LAZY=n
> > > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > > +#CHECK#CONFIG_PREEMPT_RCU=n
> > > > >  CONFIG_HZ_PERIODIC=n
> > > > >  CONFIG_NO_HZ_IDLE=n
> > > > >  CONFIG_NO_HZ_FULL=y
> > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > > > index 0513aa33c32c4..61d15b1b54d16 100644
> > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > > > @@ -1,9 +1,10 @@
> > > > >  CONFIG_SMP=y
> > > > >  CONFIG_NR_CPUS=8
> > > > > -CONFIG_PREEMPT_NONE=y
> > > > > +CONFIG_PREEMPT_DYNAMIC=n
> > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > +CONFIG_PREEMPT_NONE=n
> > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > >  CONFIG_PREEMPT=n
> > > > > -CONFIG_PREEMPT_LAZY=n
> > > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > >  CONFIG_HZ_PERIODIC=n
> > > > >  CONFIG_NO_HZ_IDLE=y
> > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > > > index cc3ea23c76557..0e090bb68a0f6 100644
> > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > > > @@ -1,10 +1,12 @@
> > > > >  CONFIG_SMP=y
> > > > >  CONFIG_NR_CPUS=8
> > > > > -CONFIG_PREEMPT_NONE=y
> > > > > +CONFIG_PREEMPT_DYNAMIC=n
> > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > +CONFIG_PREEMPT_NONE=n
> > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > >  CONFIG_PREEMPT=n
> > > > > -CONFIG_PREEMPT_LAZY=n
> > > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > > +#CHECK#CONFIG_PREEMPT_RCU=n
> > > > >  CONFIG_HZ_PERIODIC=n
> > > > >  CONFIG_NO_HZ_IDLE=y
> > > > >  CONFIG_NO_HZ_FULL=n
> > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE10 b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > > > index 420632b030dc4..b2ce37861e71a 100644
> > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > > > @@ -6,6 +6,7 @@ CONFIG_PREEMPT_VOLUNTARY=n
> > > > >  CONFIG_PREEMPT=n
> > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > > +CONFIG_PREEMPT_RCU=n
> > > > >  CONFIG_HZ_PERIODIC=n
> > > > >  CONFIG_NO_HZ_IDLE=y
> > > > >  CONFIG_NO_HZ_FULL=n
> > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > > > index 5d546efa68e83..696fba9968c60 100644
> > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > > > @@ -1,6 +1,8 @@
> > > > >  CONFIG_SMP=y
> > > > >  CONFIG_NR_CPUS=8
> > > > > -CONFIG_PREEMPT_NONE=y
> > > > > +CONFIG_PREEMPT_DYNAMIC=n
> > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > +CONFIG_PREEMPT_NONE=n
> > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > >  CONFIG_PREEMPT=n
> > > > >  CONFIG_HZ_PERIODIC=n
> > > > > 
> > > 
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites
  2026-03-03 23:58 [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites Paul E. McKenney
                   ` (3 preceding siblings ...)
  2026-03-03 23:59 ` [PATCH 4/4] scftorture: " Paul E. McKenney
@ 2026-03-05 21:29 ` Boqun Feng
  4 siblings, 0 replies; 16+ messages in thread
From: Boqun Feng @ 2026-03-05 21:29 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: rcu, linux-kernel, kernel-team, rostedt

On Tue, Mar 03, 2026 at 03:58:56PM -0800, Paul E. McKenney wrote:
> Hello!
> 
> As of v7.0-rc1, architectures that support preemption, including x86 and
> arm64, no longer support CONFIG_PREEMPT_NONE or CONFIG_PREEMPT_VOLUNTARY.
> Attempting to build kernels with these two Kconfig options results in
> .config errors, which causes torture-test programs such as rcutorture
> to throw false-positive errors.  This series fixes this v7.0-rc1
> regression by converting these scanarios from CONFIG_PREEMPT_NONE=y or
> CONFIG_PREEMPT_VOLUNTARY=y to CONFIG_PREEMPT_LAZY=y.
> 
> Those maintaining architectures not supporting preemption might wish to
> run rcutorture with CONFIG_PREEMPT_NONE=y and CONFIG_PREEMPT_VOLUNTARY=y
> because I no longer have access to any systems supporting these Kconfig
> choices.
> 
> With all that said, the patches are as follows:
> 
> 1.	rcutorture: Update due to x86 not supporting none/voluntary
> 	preemption.
> 
> 2.	rcuscale: Update due to x86 not supporting none/voluntary
> 	preemption.
> 
> 3.	refscale: Update due to x86 not supporting none/voluntary
> 	preemption.
> 
> 4.	scftorture: Update due to x86 not supporting none/voluntary
> 	preemption.
> 

I queued this series at:

	https://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux.git/ fixes.v7.0

based on v7.0-rc2, and I'm running some test from my end. If everything
goes well, I will send a fix PR before -rc3. Thank you both!

Regards,
Boqun

> 						Thanx, Paul
> 
> ------------------------------------------------------------------------
> 
>  rcu/SRCU-N         |    3 ++-
>  rcu/SRCU-T         |    3 ++-
>  rcu/SRCU-U         |    3 ++-
>  rcu/TASKS02        |    3 ++-
>  rcu/TINY01         |    3 ++-
>  rcu/TINY02         |    3 ++-
>  rcu/TRACE01        |    3 ++-
>  rcu/TREE04         |    3 ++-
>  rcu/TREE05         |    3 ++-
>  rcu/TREE06         |    3 ++-
>  rcu/TRIVIAL        |    3 ++-
>  rcuscale/TINY      |    3 ++-
>  rcuscale/TRACE01   |    3 ++-
>  refscale/NOPREEMPT |    3 ++-
>  refscale/TINY      |    3 ++-
>  scf/NOPREEMPT      |    3 ++-
>  16 files changed, 32 insertions(+), 16 deletions(-)
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v3 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption
  2026-03-05 21:08               ` Boqun Feng
@ 2026-03-05 23:24                 ` Paul E. McKenney
  0 siblings, 0 replies; 16+ messages in thread
From: Paul E. McKenney @ 2026-03-05 23:24 UTC (permalink / raw)
  To: Boqun Feng; +Cc: rcu, linux-kernel, kernel-team, rostedt

On Thu, Mar 05, 2026 at 01:08:47PM -0800, Boqun Feng wrote:
> On Thu, Mar 05, 2026 at 12:11:46PM -0800, Paul E. McKenney wrote:
> > On Thu, Mar 05, 2026 at 11:59:35AM -0800, Boqun Feng wrote:
> > > On Thu, Mar 05, 2026 at 11:06:25AM -0800, Paul E. McKenney wrote:
> > > > On Thu, Mar 05, 2026 at 10:22:35AM -0800, Boqun Feng wrote:
> > > [...]
> > > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > > > > index bd5ed7b0da5f0..2be53bf60d65b 100644
> > > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > > > > > @@ -1,9 +1,9 @@
> > > > > >  CONFIG_SMP=n
> > > > > > -CONFIG_PREEMPT_NONE=y
> > > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > > +CONFIG_PREEMPT_NONE=n
> > > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > > >  CONFIG_PREEMPT=n
> > > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > > > -CONFIG_PREEMPT_LAZY=n
> > > > > 
> > > > > This is the line that was introduced by the said commit, hence this
> > > > > patch is still separate from that commit I think?
> > > > 
> > > > I *think* I have them folded/squashed correctly.
> > > > 
> > > > I pushed this out to my -rcu "dev" branch.  The relevant commits are,
> > > > in order of increasing time of commit:
> > > > 
> > > > c70ac5693540 ("rcutorture: Adjust scenarios for default lazy preemption")
> > > 
> > > It's the commit c69ac5693540 in your "dev" branch, right?
> > 
> > Right you are!
> > 
> > > > 86126bc6d7ad ("rcutorture: Update due to x86 not supporting none/voluntary preemption")
> > > > 5631c1565493 ("Revert "rcutorture: Adjust scenarios for default lazy preemption"")
> > > > 6fd95cee7427 ("Revert "rcutorture: Update due to x86 not supporting none/voluntary preemption"")
> > > 
> > > The thing is the combination of the above 4 didn't introduce a clean
> > > base in rcu/{TINY01, TREE04, TREE05, TREE06}, as shown by:
> > > 
> > > 	git diff 'c69ac5693540^..6fd95cee7427' -- tools/testing/selftests/rcutorture/configs/rcu/{TINY01,TREE04,TREE05,TREE06}
> > > 
> > > I took a look, it's because commit 86126bc6d7ad ("rcutorture: Update due
> > > to x86 not supporting none/voluntary preemption") was based on commit
> > > c69ac5693540, and it moved a few CONFIG_PREEMPT_LAZY configs, and when
> > > it got reverted in commit 6fd95cee7427, these configs were moved back so
> > > commit 5631c1565493's revert was partially reverted.
> > > 
> > > > 17c52d7b31a1 ("rcutorture: Update due to x86 not supporting none/voluntary preemption")
> > > > 
> > > 
> > > A simple way to verify would be try `cherry-pick` this commit onto
> > > 7.0-rc1.
> > 
> > Like this?
> > 
> > $ git reset --hard v7.0-rc1
> > $ git cherry-pick 17c52d7b31a1fbec84172d279b3ab0149bc71627
> > Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TINY01
> > Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE06
> 
> Yeah, the delta is small enough so that 3-way auto-merging can handle
> it. I will just apply with these resolution. Thanks!
> 
> > [detached HEAD 551d9b94e2c80] rcutorture: Update due to x86 not supporting none/voluntary preemption
> >  Date: Tue Mar 3 11:28:02 2026 -0800
> >  12 files changed, 29 insertions(+), 13 deletions(-)
> > $ git branch lazy-1
> > $ git checkout v7.0-rc1
> > Previous HEAD position was 551d9b94e2c80 rcutorture: Update due to x86 not supporting none/voluntary preemption
> > HEAD is now at 6de23f81a5e08 Linux 7.0-rc1
> > $ git cherry-pick c69ac56935401534120ef1e40335090b973a97d2
> > [detached HEAD da3c99da7a639] rcutorture: Adjust scenarios for default lazy preemption
> >  Date: Wed Jan 21 10:40:30 2026 -0800
> >  5 files changed, 7 insertions(+)
> > 1$ git cherry-pick 86126bc6d7ad5af56c0bf8beeac12f8feaffa866
> > [detached HEAD 824577abfb3b0] rcutorture: Update due to x86 not supporting none/voluntary preemption
> >  Date: Tue Mar 3 11:28:02 2026 -0800
> >  11 files changed, 26 insertions(+), 17 deletions(-)
> > $ git diff lazy-1
> > 
> > Still no diff output.  What am I missing?
> 
> Not important right now, but if you do:
> 
> 	git range-diff 'lazy-1^..lazy-1' '17c52d7b31a1^..17c52d7b31a1'
> 
> you will see if I applied your v3 onto v7.0-rc1, I wouldn't end up
> having the exact changes as the v3 has (some auto resolution happened).

Heh!  The TREE05 diffs are different on -rcu than directly on v7.0-rc1,
but the resulting files compare equal.  Cute!!!

							Thanx, Paul

> Regards,
> Boqun
> 
> > 							Thanx, Paul
> > 
> > > Regards,
> > > Boqun
> > > 
> > > > The first was applied by Joel to the shared RCU tree, the second is in my
> > > > -rcu tree, and the last three are consecutive commits in my -rcu tree.
> > > > The following command gives no output, which I was interpreting as my
> > > > having done it correctly.  But please double-check.
> > > > 
> > > > git diff 5631c1565493^..17c52d7b31a1
> > > > 
> > > > 							Thanx, Paul
> > > > 
> > > > > Regards,
> > > > > Boqun
> > > > > 
> > > > > >  #CHECK#CONFIG_TINY_RCU=y
> > > > > >  CONFIG_HZ_PERIODIC=n
> > > > > >  CONFIG_NO_HZ_IDLE=y
> > > > > > @@ -12,4 +12,3 @@ CONFIG_RCU_TRACE=n
> > > > > >  #CHECK#CONFIG_RCU_STALL_COMMON=n
> > > > > >  CONFIG_DEBUG_LOCK_ALLOC=n
> > > > > >  CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
> > > > > > -CONFIG_PREEMPT_COUNT=n
> > > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > > > > index 30439f6fc20e6..be8860342ef71 100644
> > > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
> > > > > > @@ -1,5 +1,6 @@
> > > > > >  CONFIG_SMP=n
> > > > > > -CONFIG_PREEMPT_NONE=y
> > > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > > +CONFIG_PREEMPT_NONE=n
> > > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > > >  CONFIG_PREEMPT=n
> > > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > > > > index 18efab346381a..8fb124c28f283 100644
> > > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01
> > > > > > @@ -1,7 +1,8 @@
> > > > > >  CONFIG_SMP=y
> > > > > >  CONFIG_NR_CPUS=5
> > > > > >  CONFIG_HOTPLUG_CPU=y
> > > > > > -CONFIG_PREEMPT_NONE=y
> > > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > > +CONFIG_PREEMPT_NONE=n
> > > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > > >  CONFIG_PREEMPT=n
> > > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > > > > index 34aee1acb8662..ac857d5bcb222 100644
> > > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
> > > > > > @@ -1,11 +1,12 @@
> > > > > >  CONFIG_SMP=y
> > > > > >  CONFIG_NR_CPUS=8
> > > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > >  CONFIG_PREEMPT_NONE=n
> > > > > > -CONFIG_PREEMPT_VOLUNTARY=y
> > > > > > +CONFIG_PREEMPT_VOLUNTARY=n
> > > > > >  CONFIG_PREEMPT=n
> > > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > > > -CONFIG_PREEMPT_LAZY=n
> > > > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > > > +#CHECK#CONFIG_PREEMPT_RCU=n
> > > > > >  CONFIG_HZ_PERIODIC=n
> > > > > >  CONFIG_NO_HZ_IDLE=n
> > > > > >  CONFIG_NO_HZ_FULL=y
> > > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > > > > index 0513aa33c32c4..61d15b1b54d16 100644
> > > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
> > > > > > @@ -1,9 +1,10 @@
> > > > > >  CONFIG_SMP=y
> > > > > >  CONFIG_NR_CPUS=8
> > > > > > -CONFIG_PREEMPT_NONE=y
> > > > > > +CONFIG_PREEMPT_DYNAMIC=n
> > > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > > +CONFIG_PREEMPT_NONE=n
> > > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > > >  CONFIG_PREEMPT=n
> > > > > > -CONFIG_PREEMPT_LAZY=n
> > > > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > > >  CONFIG_HZ_PERIODIC=n
> > > > > >  CONFIG_NO_HZ_IDLE=y
> > > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > > > > index cc3ea23c76557..0e090bb68a0f6 100644
> > > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
> > > > > > @@ -1,10 +1,12 @@
> > > > > >  CONFIG_SMP=y
> > > > > >  CONFIG_NR_CPUS=8
> > > > > > -CONFIG_PREEMPT_NONE=y
> > > > > > +CONFIG_PREEMPT_DYNAMIC=n
> > > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > > +CONFIG_PREEMPT_NONE=n
> > > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > > >  CONFIG_PREEMPT=n
> > > > > > -CONFIG_PREEMPT_LAZY=n
> > > > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > > > +#CHECK#CONFIG_PREEMPT_RCU=n
> > > > > >  CONFIG_HZ_PERIODIC=n
> > > > > >  CONFIG_NO_HZ_IDLE=y
> > > > > >  CONFIG_NO_HZ_FULL=n
> > > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE10 b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > > > > index 420632b030dc4..b2ce37861e71a 100644
> > > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE10
> > > > > > @@ -6,6 +6,7 @@ CONFIG_PREEMPT_VOLUNTARY=n
> > > > > >  CONFIG_PREEMPT=n
> > > > > >  CONFIG_PREEMPT_DYNAMIC=n
> > > > > >  #CHECK#CONFIG_TREE_RCU=y
> > > > > > +CONFIG_PREEMPT_RCU=n
> > > > > >  CONFIG_HZ_PERIODIC=n
> > > > > >  CONFIG_NO_HZ_IDLE=y
> > > > > >  CONFIG_NO_HZ_FULL=n
> > > > > > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > > > > index 5d546efa68e83..696fba9968c60 100644
> > > > > > --- a/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > > > > +++ b/tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> > > > > > @@ -1,6 +1,8 @@
> > > > > >  CONFIG_SMP=y
> > > > > >  CONFIG_NR_CPUS=8
> > > > > > -CONFIG_PREEMPT_NONE=y
> > > > > > +CONFIG_PREEMPT_DYNAMIC=n
> > > > > > +CONFIG_PREEMPT_LAZY=y
> > > > > > +CONFIG_PREEMPT_NONE=n
> > > > > >  CONFIG_PREEMPT_VOLUNTARY=n
> > > > > >  CONFIG_PREEMPT=n
> > > > > >  CONFIG_HZ_PERIODIC=n
> > > > > > 
> > > > 
> > 

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2026-03-05 23:24 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-03 23:58 [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites Paul E. McKenney
2026-03-03 23:59 ` [PATCH 1/4] rcutorture: Update due to x86 not supporting none/voluntary preemption Paul E. McKenney
2026-03-04 17:26   ` [PATCH v2 " Paul E. McKenney
2026-03-05  0:01     ` [PATCH v3 " Paul E. McKenney
2026-03-05 17:53       ` Joel Fernandes
2026-03-05 19:08         ` Paul E. McKenney
2026-03-05 18:22       ` Boqun Feng
2026-03-05 19:06         ` Paul E. McKenney
2026-03-05 19:59           ` Boqun Feng
2026-03-05 20:11             ` Paul E. McKenney
2026-03-05 21:08               ` Boqun Feng
2026-03-05 23:24                 ` Paul E. McKenney
2026-03-03 23:59 ` [PATCH 2/4] rcuscale: " Paul E. McKenney
2026-03-03 23:59 ` [PATCH 3/4] refscale: " Paul E. McKenney
2026-03-03 23:59 ` [PATCH 4/4] scftorture: " Paul E. McKenney
2026-03-05 21:29 ` [PATCH 0/4] rcu: Fix lazy-preemption regression in torture-test suites Boqun Feng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox