lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 8 Mar 2016 07:21:09 -0800
From:	"Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>
To:	Ingo Molnar <mingo@...nel.org>
Cc:	linux-kernel@...r.kernel.org, yang.shi@...aro.org, tj@...nel.org,
	paul.gortmaker@...driver.com, boqun.feng@...il.com,
	tglx@...utronix.de, gang.chen.5i5j@...il.com, sj38.park@...il.com
Subject: Re: [GIT PULL rcu/next] RCU commits for 4.6

On Tue, Mar 08, 2016 at 09:53:42AM +0100, Ingo Molnar wrote:
> 
> * Paul E. McKenney <paulmck@...ux.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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ