* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.