Hello, Ingo! This pull request contains the following changes:
1. Updates to the handling of expedited grace periods, perhaps most notably parallelizing their initialization. Other changes include fixes from Boqun Feng. http://lkml.kernel.org/r/20180423022047.ga20...@linux.vnet.ibm.com 2. Miscellaneous fixes. These include an nvme fix from Nitzan Carmi that I am carrying because it depends on a new SRCU function cleanup_srcu_struct_quiesced(). This branch also includes fixes from Byungchul Park and Yury Norov. Note that several patches were deferred to the v4.19 merge window due to late location of bugs and late determination of a need for restructuring. http://lkml.kernel.org/r/20180423023150.ga21...@linux.vnet.ibm.com 3. Updates to reduce lock contention in the rcu_node combining tree. These are in preparation for the consolidation of RCU-bh, RCU-preempt, and RCU-sched into a single flavor, which was requested by Linus Torvalds in response to a security flaw whose root cause included confusion between the multiple flavors of RCU. There will be another series of contention-reduction patches in the next merge window, hopefully accompanied by the consolidation itself. http://lkml.kernel.org/r/20180423030258.ga23...@linux.vnet.ibm.com 4. Torture-test updates that save their users some time and effort. http://lkml.kernel.org/r/20180423031346.ga28...@linux.vnet.ibm.com The nvme patch called out in #2 above has a conflict with a commit in Linus's tree, which was reported by Stephen Rothwell in the course of his -next testing. He is carrying a resolution to this conflict as reported on LKML here: http://lkml.kernel.org/r/20180514134636.61831...@canb.auug.org.au This resolution looks good to me. All of these changes have been subjected to 0day Test Robot and -next testing, and are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git for-mingo for you to fetch changes up to 22df7316ac71dc1ac57415349938737d2a229c59: Merge branches 'exp.2018.05.15a', 'fixes.2018.05.15a', 'lock.2018.05.15a' and 'torture.2018.05.15a' into HEAD (2018-05-15 10:33:05 -0700) This merge commit is quite recent, however, the changes are exactly the same as the previous merge commit (434533a52e8d) dated April 30th. The only difference is the addition of Nick Piggin's Tested-by to all of the commit logs (thank you, Nick!). ---------------------------------------------------------------- Boqun Feng (2): rcu: exp: Fix "must hold exp_mutex" comments for QS reporting functions rcu: exp: Protect all sync_rcu_preempt_exp_done() with rcu_node lock Byungchul Park (3): rcu: Inline rcu_preempt_do_callback() into its sole caller rcu: Call wake_nocb_leader_defer() with 'FORCE' when nocb_q_count is high rcu: Remove deprecated RCU debugfs tracing code Nitzan Carmi (1): nvme: Avoid flush dependency in delete controller flow Paul E. McKenney (36): rcu: Parallelize expedited grace-period initialization rcu: Don't allocate rcu_nocb_mask if no one needs it rcu: Rename cond_resched_rcu_qs() to cond_resched_tasks_rcu_qs() softirq: Eliminate unused cond_resched_softirq() macro rcu: Move __rcu_read_lock() and __rcu_read_unlock() to tree_plugin.h rcu: Update rcu_bind_gp_kthread() header comment srcu: Add cleanup_srcu_struct_quiesced() rcu: Add leaf-node macros rcu: Improve non-root rcu_cbs_completed() accuracy rcu: Make rcu_start_future_gp()'s grace-period check more precise rcu: Add accessor macros for the ->need_future_gp[] array rcu: Make rcu_gp_kthread() check for early-boot activity rcu: Make rcu_gp_cleanup() more accurately predict need for new GP rcu: Avoid losing ->need_future_gp[] values due to GP start/end races rcu: Make rcu_future_needs_gp() check all ->need_future_gps[] elements rcu: Convert ->need_future_gp[] array to boolean rcu: Make rcu_migrate_callbacks wake GP kthread when needed rcu: Avoid __call_rcu_core() root rcu_node ->lock acquisition rcu: Switch __rcu_process_callbacks() to rcu_accelerate_cbs() rcu: Cleanup, don't put ->completed into an int rcu: Clear request other than RCU_GP_FLAG_INIT at GP end rcu: Inline rcu_start_gp_advanced() into rcu_start_future_gp() rcu: Make rcu_start_future_gp() caller select grace period rcu: Add funnel locking to rcu_start_this_gp() rcu: Make rcu_start_this_gp() check for out-of-range requests rcu: The rcu_gp_cleanup() function does not need cpu_needs_another_gp() rcu: Simplify and inline cpu_needs_another_gp() rcu: Drop early GP request check from rcu_gp_kthread() rcu: Update list of rcu_future_grace_period() trace events torture: Add a script to edit output from failed runs torture: Fold parse-torture.sh into parse-console.sh rcutorture: Print end-of-test state rcutorture: Print end-of-test state in kvm.sh summary rcutorture: Abbreviate kvm.sh summary lines torture: Make kvm-find-errors.sh find build warnings Merge branches 'exp.2018.05.15a', 'fixes.2018.05.15a', 'lock.2018.05.15a' and 'torture.2018.05.15a' into HEAD Paul Gortmaker (1): doc: Ensure whatisRCU.txt actually says what RCU is Yury Norov (1): rcu: Declare rcu_eqs_special_set() in public header Documentation/RCU/whatisRCU.txt | 2 + drivers/nvme/host/core.c | 2 +- include/linux/rcupdate.h | 4 +- include/linux/rcutree.h | 1 + include/linux/sched.h | 8 - include/linux/srcu.h | 36 ++- include/trace/events/rcu.h | 13 +- kernel/rcu/rcu.h | 12 +- kernel/rcu/rcu_segcblist.c | 18 -- kernel/rcu/rcu_segcblist.h | 2 - kernel/rcu/rcuperf.c | 2 +- kernel/rcu/rcutorture.c | 15 +- kernel/rcu/srcutiny.c | 9 +- kernel/rcu/srcutree.c | 30 +- kernel/rcu/tree.c | 355 ++++++++------------- kernel/rcu/tree.h | 36 ++- kernel/rcu/tree_exp.h | 235 ++++++++------ kernel/rcu/tree_plugin.h | 98 +++--- kernel/rcu/update.c | 50 +-- kernel/sched/core.c | 14 - kernel/softirq.c | 3 +- kernel/torture.c | 2 +- kernel/trace/trace_benchmark.c | 4 +- .../selftests/rcutorture/bin/kvm-find-errors.sh | 56 ++++ .../selftests/rcutorture/bin/kvm-recheck-rcu.sh | 12 +- .../selftests/rcutorture/bin/kvm-recheck.sh | 4 - .../selftests/rcutorture/bin/kvm-test-1-run.sh | 1 - .../selftests/rcutorture/bin/parse-console.sh | 115 ++++++- .../selftests/rcutorture/bin/parse-torture.sh | 105 ------ 29 files changed, 616 insertions(+), 628 deletions(-) create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-find-errors.sh delete mode 100755 tools/testing/selftests/rcutorture/bin/parse-torture.sh