From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751346AbdLATgd (ORCPT ); Fri, 1 Dec 2017 14:36:33 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:45164 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750965AbdLATgc (ORCPT ); Fri, 1 Dec 2017 14:36:32 -0500 Date: Fri, 1 Dec 2017 11:36:25 -0800 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, fweisbec@gmail.com, oleg@redhat.com Subject: [PATCH tip/core/rcu 0/17] RCU dyntick updates for v4.16 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-GCONF: 00 x-cbid: 17120119-0036-0000-0000-00000294E77C X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00008137; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000243; SDB=6.00953994; UDB=6.00482082; IPR=6.00734069; BA=6.00005726; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00018295; XFM=3.00000015; UTC=2017-12-01 19:36:29 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17120119-0037-0000-0000-0000428B9D04 Message-Id: <20171201193625.GA20681@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-12-01_05:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=3 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=1 spamscore=3 clxscore=1015 lowpriorityscore=1 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1712010228 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello! This series includes simplifications of RCU's dyntick-idle processing, most importantly making use of the the NMI style of processing for interrupts as well as NMIs. This series provides a net decrease of more than 100 lines of code. 1. Avoid ->dynticks_nmi_nesting store tearing. 2. Reduce dyntick-idle state space by carefully ordering adjustments of nesting and overall state. 3. Move rcu_nmi_{enter,exit}() to prepare for consolidation. 4. Clamp ->dynticks_nmi_nesting at eqs entry/exit. This is required to handle the half-interrupts featured by some architectures. It used to be handled by the interrupt portion of RCU's dyntick-idle processing, which this series is eliminating. Thus the clamping must move. 5. Define rcu_irq_{enter,exit}() in terms of rcu_nmi_{enter,exit}(). 6. Make ->dynticks_nesting be a simple counter, given that it now handles only process-level reasons why RCU should be watching. 7. Eliminate rcu_irq_enter_disabled() because the NMI handling already handles the possibility of interruption at any point. 8. Add tracing to irq/NMI dyntick-idle transitions. 9. Shrink ->dynticks_{nmi_,}nesting from long long to long because there had better not be more than a billion process-level reasons why RCU should be watching a given CPU. 10. Add ->dynticks field to rcu_dyntick trace event. 11. Stop duplicating lockdep checks in RCU's idle-entry code. 12. Avoid ->dynticks_nesting store tearing. 13. Fold rcu_eqs_enter_common() into rcu_eqs_enter() because it is now only invoked from that one place. 14. Fold rcu_eqs_exit_common() into rcu_eqs_exit() because it is now only invoked from that one place. 15. Simplify rcu_eqs_{enter,exit}() non-idle task debug code. 16. Update dyntick-idle design documentation to reflect NMI/irq consolidation. 17. Remove no longer used trace event rcu_prep_idle, courtesy of Steven Rostedt. Thanx, Paul ------------------------------------------------------------------------ Documentation/RCU/Design/Data-Structures/Data-Structures.html | 46 include/linux/rcutiny.h | 1 include/linux/rcutree.h | 1 include/linux/tracepoint.h | 5 include/trace/events/rcu.h | 87 - kernel/rcu/rcu.h | 31 kernel/rcu/tree.c | 466 ++++------ kernel/rcu/tree.h | 5 kernel/rcu/tree_plugin.h | 2 kernel/trace/trace.c | 11 10 files changed, 256 insertions(+), 399 deletions(-)