All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.