Received: by 10.192.165.148 with SMTP id m20csp2947257imm; Sun, 22 Apr 2018 20:04:24 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+EqgayNlT7LQeWYCzNi7mUaD6lvEY5WRdv1d1Qtf8GgdNtnPhBBC/w9ylqjCxWyt7zAWn2 X-Received: by 10.98.198.7 with SMTP id m7mr18525732pfg.66.1524452664441; Sun, 22 Apr 2018 20:04:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524452664; cv=none; d=google.com; s=arc-20160816; b=Gei1b6dlyzp1rwSJ6u4BPxDEEAwKIDkQfeRQxWvDv3m9JngdivXkB9lLdiDUFkh5Eq I6fcAJ7H8YPNu2/l5LgX+fnHgJGEewUu5TcY1eC8ZSrlooVhID42j4UNC34HGkQLKp/U shuAVqgZW6RY4P/+d7HCjnNHeZkAPtFe6suXTHXfMQ+uOLEElM8FdHwuvOaa8R681z9p zLcHK+ov9pMP+ozAYfjb+7oQKAmhy5//Nou2aq3hEG2T3W09IxAlDice9oRRSVYw4NpE kZGGbg/PBEWp1TsqDKW8JmcWWJ47/wBcf5OHefu8am7KNwozd8RStrJ02PniCzbmUQK6 VJgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:references:in-reply-to:date :subject:cc:to:from:arc-authentication-results; bh=TJOe7jcBj6kuUtTaEB0/MII9IW95uQQDP6bc/ZA4htA=; b=SRj8fcahPSx1/qzfXnedveG1Bs2H/2vPgXiS2FnpS0ny61efYhZA/1DhcOPz6enHOo nZKzKGcZjgYx+BSI1Ajo6V7RuSWftQPmeNH6EJiVnEUxI4b6ZLLo3GMcrX8NeClBHX0p UnFitp0SKApCfHlrhZueLfMn/IdBflZlVdWPGEXk6UTnL/i3g9Ngf5KqnDQFkFFIBpje Qf0wXNNrGMFhTB9eVNOK94fJ+KA9Wi3AvVHxCyBvYaAdNMOpdgCCpH2pck3anIjj88xJ yBF+5LLYRU8QErQggAs5lUvpwyZyi+bdvcDMGE65jlD7cH9N6jqCzCWRJQ07Jjbb1vQw N/uA== 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 r1si10299375pfb.247.2018.04.22.20.04.10; Sun, 22 Apr 2018 20:04:24 -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 S1754043AbeDWDCq (ORCPT + 99 others); Sun, 22 Apr 2018 23:02:46 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:34020 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753905AbeDWDCi (ORCPT ); Sun, 22 Apr 2018 23:02:38 -0400 Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w3N2wkLs118985 for ; Sun, 22 Apr 2018 23:02:38 -0400 Received: from e11.ny.us.ibm.com (e11.ny.us.ibm.com [129.33.205.201]) by mx0a-001b2d01.pphosted.com with ESMTP id 2hh2j5qgkv-1 (version=TLSv1.2 cipher=AES256-SHA256 bits=256 verify=NOT) for ; Sun, 22 Apr 2018 23:02:37 -0400 Received: from localhost by e11.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Sun, 22 Apr 2018 23:02:37 -0400 Received: from b01cxnp22035.gho.pok.ibm.com (9.57.198.25) by e11.ny.us.ibm.com (146.89.104.198) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Sun, 22 Apr 2018 23:02:31 -0400 Received: from b01ledav003.gho.pok.ibm.com (b01ledav003.gho.pok.ibm.com [9.57.199.108]) by b01cxnp22035.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w3N32VS553346360; Mon, 23 Apr 2018 03:02:31 GMT Received: from b01ledav003.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 492FFB204E; Mon, 23 Apr 2018 00:04:34 -0400 (EDT) Received: from paulmck-ThinkPad-W541 (unknown [9.85.149.45]) by b01ledav003.gho.pok.ibm.com (Postfix) with ESMTP id 0D7DCB2056; Mon, 23 Apr 2018 00:04:34 -0400 (EDT) Received: by paulmck-ThinkPad-W541 (Postfix, from userid 1000) id 0D72C16C6DFB; Sun, 22 Apr 2018 20:03:45 -0700 (PDT) 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, joel.opensrc@gmail.com, torvalds@linux-foundation.org, npiggin@gmail.com, "Paul E. McKenney" Subject: [PATCH tip/core/rcu 04/21] rcu: Make rcu_gp_kthread() check for early-boot activity Date: Sun, 22 Apr 2018 20:03:27 -0700 X-Mailer: git-send-email 2.5.2 In-Reply-To: <20180423030258.GA23370@linux.vnet.ibm.com> References: <20180423030258.GA23370@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18042303-2213-0000-0000-0000029783A1 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00008903; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000257; SDB=6.01021898; UDB=6.00521542; IPR=6.00801133; MB=3.00020719; MTD=3.00000008; XFM=3.00000015; UTC=2018-04-23 03:02:35 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18042303-2214-0000-0000-000059DC4067 Message-Id: <1524452624-27589-4-git-send-email-paulmck@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-04-23_01:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 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-1804230032 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The rcu_gp_kthread() function immediately sleeps waiting to be notified of the need for a new grace period, which currently works because there are a number of code sequences that will provide the needed wakeup later. However, some of these code sequences need to acquire the root rcu_node structure's ->lock, and contention on that lock has started manifesting. This commit therefore makes rcu_gp_kthread() check for early-boot activity when it starts up, omitting the initial sleep in that case. Reported-by: Nicholas Piggin Signed-off-by: Paul E. McKenney --- kernel/rcu/tree.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 79fb99951a0c..497f139056c7 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2192,6 +2192,12 @@ static int __noreturn rcu_gp_kthread(void *arg) struct rcu_state *rsp = arg; struct rcu_node *rnp = rcu_get_root(rsp); + /* Check for early-boot work. */ + raw_spin_lock_irq_rcu_node(rnp); + if (need_any_future_gp(rnp)) + WRITE_ONCE(rsp->gp_flags, RCU_GP_FLAG_INIT); + raw_spin_unlock_irq_rcu_node(rnp); + rcu_bind_gp_kthread(); for (;;) { -- 2.5.2