Re: [GIT PULL rcu/next] RCU commits for 4.18
From: Ingo Molnar
Date: Wed May 16 2018 - 03:06:36 EST
* Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx> wrote:
> 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.GA20189@xxxxxxxxxxxxxxxxxx
>
> 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.GA21533@xxxxxxxxxxxxxxxxxx
>
> 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.GA23370@xxxxxxxxxxxxxxxxxx
>
> 4. Torture-test updates that save their users some time and effort.
>
> http://lkml.kernel.org/r/20180423031346.GA28371@xxxxxxxxxxxxxxxxxx
>
> 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.61831bcc@xxxxxxxxxxxxxxxx
>
> 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
Pulled, thanks a lot Paul!
Ingo