linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, yang.shi@linaro.org, tj@kernel.org,
	paul.gortmaker@windriver.com, boqun.feng@gmail.com,
	tglx@linutronix.de, gang.chen.5i5j@gmail.com,
	sj38.park@gmail.com
Subject: Re: [GIT PULL rcu/next] RCU commits for 4.6
Date: Tue, 8 Mar 2016 07:21:09 -0800	[thread overview]
Message-ID: <20160308152109.GK3577@linux.vnet.ibm.com> (raw)
In-Reply-To: <20160308085342.GA12413@gmail.com>

On Tue, Mar 08, 2016 at 09:53:42AM +0100, Ingo Molnar wrote:
> 
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:
> 
> > Hello, Ingo,
> > 
> > Note that this series conflicts with some commits in Thomas Gleixner's
> > hotplug series and in Daniel Wagner's swait series, both of which are in
> > -tip.  I have suggested conflict-resolution commits for Daniel's commits
> > (25f0d48a4299 "Merge commit 'abedf8e2419fb873d919dd74de2e84b510259339'
> > into wagi.2016.03.01a") and for Thomas's commits (dc96aeda643f "Merge
> > commit '27d50c7eeb0f' into wagi.2016.03.01a"), which you might find
> > useful.  These merge commits pass rcutorture testing, 0day robot testing,
> > and -next testing.
> > 
> > The changes in this series include:
> > 
> > 1.	Documentation updates, including RCU data structure design-level
> > 	documentation.
> > 
> > 	https://lkml.org/lkml/2016/2/24/26
> > 
> > 2.	Miscellaneous fixes.
> > 
> > 	https://lkml.org/lkml/2016/2/24/34
> > 
> > 3.	Torture-test updates.
> > 
> > 	https://lkml.org/lkml/2016/2/24/50
> > 
> > As noted earlier, 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 2863b4e3dd92a9d697dd66b219710e478e0a4531:
> > 
> >   Merge branches 'doc.2015.02.23a', 'fixes.2015.02.23a' and 'torture.2015.02.23a' into HEAD (2016-02-23 20:05:19 -0800)
> > 
> > ----------------------------------------------------------------
> > Boqun Feng (3):
> >       sparse: Add __private to privatize members of structs
> >       RCU: Privatize rcu_node::lock
> >       irq: Privatize irq_common_data::state_use_accessors
> > 
> > Chen Gang (1):
> >       rcu: Remove useless rcu_data_p when !PREEMPT_RCU
> > 
> > Paul E. McKenney (25):
> >       rcutorture: Add checks for rcutorture writer starvation
> >       rcutorture: Don't keep empty console.log.diags files
> >       rcutorture: Check for self-detected stalls
> >       documentation:  Add real-time requirements from CPU-bound workloads
> >       documentation: Fix control dependency and identical stores
> >       documentation: Fix memory-barriers.txt section references
> >       documentation: Add synchronize_rcu_mult() to the requirements
> >       documentation: Remove obsolete reference to RCU-protected indexes
> >       documentation: Subsequent writes ordered by rcu_dereference()
> >       documentation: Distinguish between local and global transitivity
> >       documentation:  Add alternative release-acquire outcome
> >       documentation: Add documentation for RCU's major data structures
> >       documentation: Explain why rcu_read_lock() needs no barrier()
> >       documentation: Transitivity is not cumulativity
> >       documentation: Document illegality of call_rcu() from offline CPUs
> >       documentation: Explain how RCU's combining tree fights contention
> >       rcu: Assign false instead of 0 for ->core_needs_qs
> >       rcu: Update rcu_report_qs_rsp() comment
> >       rcu: Stop treating in-kernel CPU-bound workloads as errors
> >       rcu: Set rdp->gpwrap when CPU is idle
> >       rcutorture: Correct no-expedite console messages
> >       rcu: Document unique-name limitation for DEFINE_STATIC_SRCU()
> >       rcu: Catch up rcu_report_qs_rdp() comment with reality
> >       rcu: Export rcu_gp_is_normal()
> >       Merge branches 'doc.2015.02.23a', 'fixes.2015.02.23a' and 'torture.2015.02.23a' into HEAD
> > 
> > Paul Gortmaker (1):
> >       rcu: Make rcu/tiny_plugin.h explicitly non-modular
> > 
> > SeongJae Park (1):
> >       documentation: Clarify compiler store-fusion example
> > 
> > Yang Shi (1):
> >       rcu: Remove rcu_user_hooks_switch
> > 
> >  .../Design/Data-Structures/BigTreeClassicRCU.svg   |  474 +++++++
> >  .../Design/Data-Structures/BigTreeClassicRCUBH.svg |  499 +++++++
> >  .../Data-Structures/BigTreeClassicRCUBHdyntick.svg |  695 ++++++++++
> >  .../Data-Structures/BigTreePreemptRCUBHdyntick.svg |  741 +++++++++++
> >  .../BigTreePreemptRCUBHdyntickCB.svg               |  858 ++++++++++++
> >  .../Design/Data-Structures/Data-Structures.html    | 1395 ++++++++++++++++++++
> >  .../Design/Data-Structures/Data-Structures.htmlx   | 1295 ++++++++++++++++++
> >  .../Design/Data-Structures/HugeTreeClassicRCU.svg  |  939 +++++++++++++
> >  .../RCU/Design/Data-Structures/TreeLevel.svg       |  828 ++++++++++++
> >  .../RCU/Design/Data-Structures/TreeMapping.svg     |  305 +++++
> >  .../Design/Data-Structures/TreeMappingLevel.svg    |  380 ++++++
> >  .../RCU/Design/Data-Structures/blkd_task.svg       |  843 ++++++++++++
> >  .../RCU/Design/Data-Structures/nxtlist.svg         |  396 ++++++
> >  .../RCU/Design/Requirements/Requirements.html      |  225 +++-
> >  .../RCU/Design/Requirements/Requirements.htmlx     |  121 +-
> >  Documentation/memory-barriers.txt                  |  141 +-
> >  include/linux/compiler.h                           |   12 +-
> >  include/linux/irq.h                                |    6 +-
> >  include/linux/rcupdate.h                           |    2 -
> >  include/linux/srcu.h                               |   19 +-
> >  kernel/irq/internals.h                             |    4 +
> >  kernel/rcu/rcutorture.c                            |   14 +-
> >  kernel/rcu/tiny_plugin.h                           |   15 +-
> >  kernel/rcu/tree.c                                  |  143 +-
> >  kernel/rcu/tree.h                                  |   42 +-
> >  kernel/rcu/tree_plugin.h                           |   27 +-
> >  kernel/rcu/update.c                                |    1 +
> >  scripts/checkpatch.pl                              |    3 +-
> >  .../selftests/rcutorture/bin/parse-console.sh      |    6 +-
> >  29 files changed, 10233 insertions(+), 196 deletions(-)
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreeClassicRCU.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBH.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreeClassicRCUBHdyntick.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntick.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/Data-Structures.html
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/Data-Structures.htmlx
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/HugeTreeClassicRCU.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/TreeLevel.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/TreeMapping.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/TreeMappingLevel.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/blkd_task.svg
> >  create mode 100644 Documentation/RCU/Design/Data-Structures/nxtlist.svg
> 
> Pulled, thanks a lot Paul!
> 
> So I've done the conflict resolutions with tmp:smp/hotplug and tip:sched/core 
> myself, and came up with a mostly identical resolution, except this difference 
> with your resolution in wagi.2016.03.01a:
> 
> --- linux-next/kernel/rcu/tree.c
> +++ tip/kernel/rcu/tree.c
> @@ -2046,8 +2046,8 @@ static void rcu_gp_cleanup(struct rcu_st
>  		/* smp_mb() provided by prior unlock-lock pair. */
>  		nocb += rcu_future_gp_cleanup(rsp, rnp);
>  		sq = rcu_nocb_gp_get(rnp);
> -		raw_spin_unlock_irq_rcu_node(rnp);
>  		rcu_nocb_gp_cleanup(sq);
> +		raw_spin_unlock_irq_rcu_node(rnp);
>  		cond_resched_rcu_qs();
>  		WRITE_ONCE(rsp->gp_activity, jiffies);
>  		rcu_gp_slow(rsp, gp_cleanup_delay);
> 
> but your resolution is better, rcu_nocb_gp_cleanup() can (and should) be done 
> outside of the rcu_node lock.
> 
> So we have the same resolution now, which is good! ;-)

Glad we were close!

Just for purposes of satisfying curiosity, I am running rcutorture on your
version.  ;-)

							Thanx, Paul

  reply	other threads:[~2016-03-08 15:25 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-07 20:25 [GIT PULL rcu/next] RCU commits for 4.6 Paul E. McKenney
2016-03-08  8:53 ` Ingo Molnar
2016-03-08 15:21   ` Paul E. McKenney [this message]
2016-03-08 18:18     ` Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160308152109.GK3577@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=boqun.feng@gmail.com \
    --cc=gang.chen.5i5j@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=paul.gortmaker@windriver.com \
    --cc=sj38.park@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=yang.shi@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).