From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752867AbbJFQ3P (ORCPT ); Tue, 6 Oct 2015 12:29:15 -0400 Received: from e32.co.us.ibm.com ([32.97.110.150]:47984 "EHLO e32.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751498AbbJFQ3O (ORCPT ); Tue, 6 Oct 2015 12:29:14 -0400 X-IBM-Helo: d03dlp01.boulder.ibm.com X-IBM-MailFrom: paulmck@linux.vnet.ibm.com X-IBM-RcptTo: linux-kernel@vger.kernel.org Date: Tue, 6 Oct 2015 09:29:08 -0700 From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: mingo@kernel.org, jiangshanlai@gmail.com, dipankar@in.ibm.com, akpm@linux-foundation.org, mathieu.desnoyers@efficios.com, josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com, dvhart@linux.intel.com, fweisbec@gmail.com, oleg@redhat.com, bobby.prani@gmail.com Subject: [PATCH tip/core/rcu 0/18] Expedited grace-period improvements for 4.4 Message-ID: <20151006162907.GA12020@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15100616-0005-0000-0000-000018BC9DAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello! This commit continues the effort to reduce the OS jitter from RCU's expedited grace-period primitives, while also loosening the coupling between CPU hotplug and RCU's expedited grace-period primitives: 1. Use rsp->expedited_wq instead of sync_rcu_preempt_exp_wq to enable later code consolidation. 2. Move rcu_report_exp_rnp() to allow later code consolidation. 3. Consolidate combining-tree bitmaks setup for the initialization portion of synchronize_rcu_expedited(). 4. Use single-stage IPI algorithm for preemptible-RCU expedited grace periods. 5. Make synchronize_sched_expedited() use the combining tree to reduce memory contention when waiting for quiescent states. 6. Rename ->qs_pending to ->core_needs_qs to better match this field's use. 7. Invert ->passed_quiesce and rename to ->cpu_no_qs in order to enable later aggregate-OR for requests for normal and expedited grace periods. 8. Make ->cpu_no_qs be a union for aggregate OR. 9. Switch synchronize_sched_expedited() from stop-CPUs to IPI. 10. Stop silencing lockdep false positive for expedited grace periods, given that synchronize_rcu_expedited() no longer invokes synchronize_sched_expedited(), eliminating the apparent deadlock. (Just for the record, there never was a real deadlock.) 11. Stop excluding CPU hotplug in synchronize_sched_expedited(). 12. Remove try_get_online_cpus(), which is now no longer used. 13. Bring sync_sched_exp_select_cpus() into alignment with sync_rcu_exp_select_cpus() as a first step towards consolidating them into one function. 14. Consolidate expedited CPU selection, now that #13 enabled it. 15. Add online/offline information to expedited stall warning message. 16. Dump blocking tasks in expedited stall-warning messages. 17. Enable stall warnings for synchronize_rcu_expedited(). 18. Improve synchronize_sched_expedited() CPU-hotplug handling. Thanx, Paul ------------------------------------------------------------------------ b/Documentation/RCU/trace.txt | 32 +- b/include/linux/cpu.h | 2 b/include/linux/sched.h | 10 b/kernel/cpu.c | 13 b/kernel/rcu/tree.c | 561 ++++++++++++++++++++++++++++++---------- b/kernel/rcu/tree.h | 50 ++- b/kernel/rcu/tree_plugin.h | 579 ++++++++++++++++++++++-------------------- b/kernel/rcu/tree_trace.c | 10 8 files changed, 782 insertions(+), 475 deletions(-)