Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp928799imm; Mon, 21 May 2018 17:28:54 -0700 (PDT) X-Google-Smtp-Source: AB8JxZptoHo6gT/h03DYDu0/RyMs54pnkGi8uqZUc7bdHh9fCwj9xmUhWmarzVIFrPEn1Dq3m8rD X-Received: by 2002:a17:902:bb93:: with SMTP id m19-v6mr22139021pls.74.1526948934392; Mon, 21 May 2018 17:28:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526948934; cv=none; d=google.com; s=arc-20160816; b=By5/36uQazPhHvifSW4dVlEkss8YXZO0PW/CB844lua+iNtSgqBq2gy+dk3A6ewLys KUJfzK6glERW1D2Kpbwscmn4UEvFQTz7TTvohmG85HTt1iVcthXpIsKw1fzgOeWqZVrb OIVQOlMiiHsm7f7dIVWmzQ1wlEvhIK3KryVTYFTJCZPJmE0f0VG4sQlG1eSJ4lcwZ/eG 9XdB5Dyb3s1BpNoM458e0GAhE/cQ+AX9JhZTdKq1Ppdb9CVXZLQkXFDzsjTGKzcLoa1b oxyfUE0P51+qd3T+oiGnO++yoS9l0zsnNRNPsAvfh6BiekrZEsI/FbgItvffrm77dO6U J7lQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:user-agent:in-reply-to :content-disposition:mime-version:references:reply-to:subject:cc:to :from:date:arc-authentication-results; bh=RWFcdY0NngX6REo/eJRkrv6R0cozxM6sFyb6oyrJdGM=; b=BVXw4tdmh2xyh6+Xzu2+9wz0mTpodrwhBAHtgOE0dc6s04KobfiX7w+nfjhh4CT8rZ fVWGN5TUn31fjov/ZFhOXGvoPH0ThpI9yvAlnyA8aTmHZT7ArTlA3tfZ6tUaQ3MUPgiZ 8RlUuoHvu/B1rfSSkXwOVh0G4+md5BUJBpQGCjKG+TcznjS9EdtYpRICK+aKPfeFI4Lr yR1pgZFb6NWZovG+Wm31vN8+Zqs3HA8dTLXxA2v0eZnm0OHAJXbTQz34ftlLD9Tead7E vrPyR0B1nHP9WaofdD6HE9v/d1xNacHKxYqnHyansuI0jZTOfVh/9c57hqdR6qot12Qq 5c9A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 92-v6si14976181plc.452.2018.05.21.17.28.40; Mon, 21 May 2018 17:28:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752080AbeEVA04 (ORCPT + 99 others); Mon, 21 May 2018 20:26:56 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:53330 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751019AbeEVA0w (ORCPT ); Mon, 21 May 2018 20:26:52 -0400 Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w4M0NYxL123366 for ; Mon, 21 May 2018 20:26:51 -0400 Received: from e11.ny.us.ibm.com (e11.ny.us.ibm.com [129.33.205.201]) by mx0b-001b2d01.pphosted.com with ESMTP id 2j47nt1wpe-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 21 May 2018 20:26:51 -0400 Received: from localhost by e11.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 21 May 2018 20:26:50 -0400 Received: from b01cxnp23033.gho.pok.ibm.com (9.57.198.28) by e11.ny.us.ibm.com (146.89.104.198) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Mon, 21 May 2018 20:26:47 -0400 Received: from b01ledav003.gho.pok.ibm.com (b01ledav003.gho.pok.ibm.com [9.57.199.108]) by b01cxnp23033.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w4M0QkJE56688698; Tue, 22 May 2018 00:26:46 GMT Received: from b01ledav003.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B39DDB2064; Mon, 21 May 2018 21:28:37 -0400 (EDT) Received: from b01ledav003.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9453BB2067; Mon, 21 May 2018 21:28:37 -0400 (EDT) Received: from paulmck-ThinkPad-W541 (unknown [9.70.82.108]) by b01ledav003.gho.pok.ibm.com (Postfix) with ESMTP; Mon, 21 May 2018 21:28:37 -0400 (EDT) Received: by paulmck-ThinkPad-W541 (Postfix, from userid 1000) id A043716C3FCA; Mon, 21 May 2018 17:28:23 -0700 (PDT) Date: Mon, 21 May 2018 17:28:23 -0700 From: "Paul E. McKenney" To: Joel Fernandes Cc: Joel Fernandes , linux-kernel@vger.kernel.org, Josh Triplett , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , byungchul.park@lge.com, kernel-team@android.com Subject: Re: [PATCH v3 4/4] rcu: Unlock non-start node only after accessing its gp_seq_needed Reply-To: paulmck@linux.vnet.ibm.com References: <20180521044220.123933-1-joel@joelfernandes.org> <20180521044220.123933-5-joel@joelfernandes.org> <20180521232537.GJ3803@linux.vnet.ibm.com> <20180522000734.GD40541@joelaf.mtv.corp.google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180522000734.GD40541@joelaf.mtv.corp.google.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-GCONF: 00 x-cbid: 18052200-2213-0000-0000-000002A95DEA X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009063; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000261; SDB=6.01035761; UDB=6.00529805; IPR=6.00814889; MB=3.00021229; MTD=3.00000008; XFM=3.00000015; UTC=2018-05-22 00:26:50 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18052200-2214-0000-0000-00005A3388DC Message-Id: <20180522002823.GP3803@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-05-21_10:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1805220003 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, May 21, 2018 at 05:07:34PM -0700, Joel Fernandes wrote: > On Mon, May 21, 2018 at 04:25:38PM -0700, Paul E. McKenney wrote: > > On Sun, May 20, 2018 at 09:42:20PM -0700, Joel Fernandes wrote: > > > We acquire gp_seq_needed locklessly. To be safe, lets do the unlocking > > > after the access. > > > > Actually, no, we hold rnp_start's ->lock throughout. And this CPU (or in > > the case of no-CBs CPUs, this task) is in charge of rdp->gp_seq_needed, > > so nothing else is accessing it. Or at least that is the intent. ;-) > > I was talking about protecting the internal node's rnp->gp_seq_needed, not > the rnp_start's gp_seq_needed. Ah, good point, I missed the "if" condition. This can be argued to work, sort of, given that we still hold the leaf rcu_node structure's lock, so that there is a limit to how far grace periods can advance. But the code would of course be much cleaner with your change. > We are protecting them in the loop: > > like this: > for(...) > if (rnp != rnp_start) > raw_spin_lock_rcu_node(rnp); > [...] > // access rnp->gp_seq and rnp->gp_seq_needed > [...] > if (rnp != rnp_start) > raw_spin_unlock_rcu_node(rnp); > > But we don't need to do such protection in unlock_out ? I'm sorry if I'm > missing something, but I'm wondering if rnp->gp_seq_needed of an internal > node can be accessed locklessly, then why can't that be done also in the > funnel locking loop - after all we are holding the rnp_start's lock through > out right? I was focused on the updates, and missed the rnp->gp_seq_req access in the "if" statement. The current code does sort of work, but only assuming that the compiler doesn't tear the load, and so your change would help. Could you please resend with your other two updated patches? It depends on one of the earlier patches, so does not apply cleanly as-is. I could hand-apply it, but that sounds like a good way to make your updated series fail to apply. ;-) But could you also make the commit log explicitly call out the "if" condition as being the offending access? Thanx, Paul