From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756541AbdESTGS (ORCPT ); Fri, 19 May 2017 15:06:18 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:51506 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753390AbdESTGQ (ORCPT ); Fri, 19 May 2017 15:06:16 -0400 Date: Fri, 19 May 2017 12:06:09 -0700 From: "Paul E. McKenney" To: Steven Rostedt Cc: Ingo Molnar , linux-kernel@vger.kernel.org, Peter Zijlstra , Thomas Gleixner Subject: Re: Use case for TASKS_RCU Reply-To: paulmck@linux.vnet.ibm.com References: <20170515182354.GA25440@linux.vnet.ibm.com> <20170516062233.tyz7ze7ilmbkxtjc@gmail.com> <20170516122354.GB3956@linux.vnet.ibm.com> <20170519062331.52dhungzvcsdxdgo@gmail.com> <20170519133550.GD3956@linux.vnet.ibm.com> <20170519100421.27298063@gandalf.local.home> <20170519102331.0d5a8536@gandalf.local.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170519102331.0d5a8536@gandalf.local.home> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-GCONF: 00 x-cbid: 17051919-0040-0000-0000-000003437CF2 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00007086; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000212; SDB=6.00862718; UDB=6.00428081; IPR=6.00642467; BA=6.00005358; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015513; XFM=3.00000015; UTC=2017-05-19 19:06:12 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17051919-0041-0000-0000-00000737ADBD Message-Id: <20170519190609.GE3956@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-05-19_12:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1705190118 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 19, 2017 at 10:23:31AM -0400, Steven Rostedt wrote: > On Fri, 19 May 2017 10:04:21 -0400 > Steven Rostedt wrote: > > > On Fri, 19 May 2017 06:35:50 -0700 > > "Paul E. McKenney" wrote: > > > > > Simpler would be better! > > > > > > However, is it really guaranteed that one SCHED_IDLE thread cannot > > > preempt another? If not, then the trampoline-freeing SCHED_IDLE thread > > > might preempt some other SCHED_IDLE thread in the middle of a trampoline. > > > I am not seeing anything that prevents such preemption, but it is rather > > > early local time, so I could easily be missing something. > > > > > > However, if SCHED_IDLE threads cannot preempt other threads, even other > > > SCHED_IDLE threads, then your approach sounds quite promising to me. > > > > > > Steve, Peter, thoughts? > > > > SCHED_IDLE is the swapper task. There's one on each CPU, and they don't > > migrate. And they only get called when there's no other task running. > > Peter just "schooled" me on IRC. I stand corrected (and he may respond > to this email too). I guess any task can become SCHED_IDLE. > > But that just makes this an even less likely option for > synchronize_rcu_tasks(). Hmmm... The goal is to make sure that any task that was preempted or running at a given point in time passes through a voluntary context switch (or userspace execution, or, ...). What is the simplest way to get this job done? To Ingo's point, I bet that there is a simpler way than the current TASKS_RCU implementation. Ingo, if I make it fit into 100 lines of code, would you be OK with it? I probably need a one-line hook at task-creation time and another at task-exit time, if that makes a difference. Thanx, Paul