For kernels built with CONFIG_PREEMPTION=n and CONFIG_PREEMPT_COUNT=y, run the RCU stall tests. runqemu kvm slirp nographic qemuparams="-m 1024 -smp 4" bootparams="console=ttyS0 rcutorture.stall_cpu=30 rcutorture.stall_no_softlockup=1 rcutorture.stall_cpu_block=1" -d [ 10.841071] rcu-torture: rcu_torture_stall begin CPU stall [ 10.841073] rcu_torture_stall start on CPU 3. [ 10.841077] BUG: scheduling while atomic: rcu_torture_sta/66/0x0000000 .... [ 10.841108] Call Trace: [ 10.841110] <TASK> [ 10.841112] dump_stack_lvl+0x64/0xb0 [ 10.841118] dump_stack+0x10/0x20 [ 10.841121] __schedule_bug+0x8b/0xb0 [ 10.841126] __schedule+0x2172/0x2940 [ 10.841157] schedule+0x9b/0x150 [ 10.841160] schedule_timeout+0x2e8/0x4f0 [ 10.841192] schedule_timeout_uninterruptible+0x47/0x50 [ 10.841195] rcu_torture_stall+0x2e8/0x300 [ 10.841199] kthread+0x175/0x1a0 [ 10.841206] ret_from_fork+0x2c/0x50 Due to invoke schedule_timeout() forces the CPU to go through a quiescent state, cause RCU stall not appear and also cause scheduling while atomic complaints. so this commit add description of rcutorture.stall_cpu_block, it should not to be set in CONFIG_PREEMPTION=n kernels. Signed-off-by: Zqiang <qiang1.zhang@xxxxxxxxx> --- Documentation/admin-guide/kernel-parameters.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 6734d1255682..56f4eb8c7cf2 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -5053,6 +5053,11 @@ Sleep while stalling if set. This will result in warnings from preemptible RCU in addition to any other stall-related activity. + Note that for CONFIG_PREEMPTION=n kernel, if set. + will forces the CPU to go through a quiescent state + and it can also cause scheduling-while-atomic + complaints(CONFIG_PREEMPT_COUNT=y), so should not be set. + rcutorture.stall_cpu_holdoff= [KNL] Time to wait (s) after boot before inducing stall. -- 2.25.1