diff options
author | Paul E. McKenney <paulmck@linux.ibm.com> | 2019-04-14 18:30:22 -0700 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.ibm.com> | 2019-05-28 09:06:09 -0700 |
commit | ab21f6081f7bc09a0918ef888de795d59a907c1a (patch) | |
tree | c6a0838e28969de0a8b9a14cecc455634a9e5678 /kernel/configs.c | |
parent | 52b23be7ee023d7f1b67e7a20443ef352c7b5d2d (diff) | |
download | linux-ab21f6081f7bc09a0918ef888de795d59a907c1a.tar.gz |
rcutorture: Give the scheduler a chance on PREEMPT && NO_HZ_FULL kernels
In !PREEMPT kernels, cond_resched() is a no-op. In NO_HZ_FULL kernels, in-kernel execution (such as that of rcutorture's kthreads) might extend indefinitely without the scheduler gaining the aid of a scheduling-clock interrupt. This combination can make the interaction of an rcutorture forward-progress test and a CPU-hotplug stop_machine operation make less forward progress than one might like. Additionally, Sebastian Siewior notes that NO_HZ_FULL kernels have a scheduler check upon return to userspace execution, which suggests that in-kernel emulation of tight userspace loops containing system calls doing call_rcu() might also need explicit checks in the PREEMPT && NO_HZ_FULL case. This commit therefore introduces a rcu_torture_fwd_prog_cond_resched() function that explicitly invokes schedule() in such kernels whenever need_resched() returns true, while retaining use of cond_resched() for kernels that are either !PREEMPT or !NO_HZ_FULL. Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
Diffstat (limited to 'kernel/configs.c')
0 files changed, 0 insertions, 0 deletions