[PATCH tip/core/rcu 0/22] Grace-period fixes for v4.19

From: Paul E. McKenney
Date: Mon Jun 25 2018 - 20:19:10 EST


Hello!

This series includes grace-period-related fixes that suppress false-positive
warnings and add forward-progress fixes that would otherwise have resulted
in grace-period hangs when the failsafes were removed. The reason for
wanting to remove the failsafes is that they result in lock contention,
which needs to be reduced in preparation for consolidation of the three
flavors of RCU into one flavor to rule them all.

1. Clean up handling of tasks blocked across full-rcu_node offline.

2. Fix an obsolete ->qsmaskinit comment.

3. Make rcu_init_new_rnp() stop upon already-set bit.

4. Make rcu_report_unblock_qs_rnp() warn on violated preconditions.

5. Fix typo and add additional debug in code warning of task
blocked on the current grace period before it has started.

6. Replace smp_wmb() with smp_store_release() for stall check
in order to improve readability (no change in ordering).

7. Prevent useless FQS scan after all CPUs have checked in.

8. Suppress false-positive offline-CPU lockdep-RCU splat.

9. Suppress false-positive preempted-task splats.

10. Suppress more involved false-positive preempted-task splats.

11. Suppress false-positive splats from mid-init task resume.

12. Fix grace-period hangs from mid-init task resume. (Well, they
would be hangs without the failsafes, anyway.)

13. Fix grace-period hangs due to race with CPU offline. (Again,
they would be hangs without the failsafes.)

14. Add RCU-preempt check for waiting on newly onlined CPU.

15. Move grace-period pre-init delay after pre-init.

16. Remove failsafe check for lost quiescent state.

17. Change units of onoff_interval to jiffies in order to allow more
intensive testing of CPU-hotplug interactions with RCU.

18. Remove CPU-hotplug failsafe from force-quiescent-state code path.

19. Add up-tree information to dump_blkd_tasks() diagnostics.

20. Add CPU online/offline state to dump_blkd_tasks().

21. Record ->gp_state for both phases of grace-period initialization.

22. Add diagnostics for offline CPUs failing to report QS.

Thanx, Paul

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

Documentation/admin-guide/kernel-parameters.txt | 4
include/trace/events/rcu.h | 10
kernel/rcu/rcutorture.c | 4
kernel/rcu/tree.c | 202 ++++++----
kernel/rcu/tree.h | 30 +
kernel/rcu/tree_plugin.h | 51 +-
tools/testing/selftests/rcutorture/configs/rcu/TREE03.boot | 4
tools/testing/selftests/rcutorture/configs/rcu/ver_functions.sh | 2
8 files changed, 203 insertions(+), 104 deletions(-)