From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753913AbcCHPZH (ORCPT ); Tue, 8 Mar 2016 10:25:07 -0500 Received: from e38.co.us.ibm.com ([32.97.110.159]:59793 "EHLO e38.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751516AbcCHPZB (ORCPT ); Tue, 8 Mar 2016 10:25:01 -0500 X-IBM-Helo: d03dlp02.boulder.ibm.com X-IBM-MailFrom: paulmck@linux.vnet.ibm.com X-IBM-RcptTo: linux-kernel@vger.kernel.org Date: Tue, 8 Mar 2016 07:21:09 -0800 From: "Paul E. McKenney" To: Ingo Molnar 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 Message-ID: <20160308152109.GK3577@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20160307202516.GA15509@linux.vnet.ibm.com> <20160308085342.GA12413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160308085342.GA12413@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16030815-0029-0000-0000-0000114741CD Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 08, 2016 at 09:53:42AM +0100, Ingo Molnar wrote: > > * Paul E. McKenney 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