Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp5774352pxv; Wed, 21 Jul 2021 13:48:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzHLBkM30WZjU5fvj7+13JgIbqLKNaIv9ej5epIdQ/JOgrOCxhHbduwmYaDmg5xtmrCfUPn X-Received: by 2002:aa7:d990:: with SMTP id u16mr49932594eds.263.1626900500833; Wed, 21 Jul 2021 13:48:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626900500; cv=none; d=google.com; s=arc-20160816; b=iNtKXr19BZsqxrpX+Q/Poy8rb6yZE58YiMyoTJ4zslYMdLXI4KgU12TXNSNhaVEzCl BUmXPbzMv+YwRyLImg8tTEI4XlxmzWSFuweeKEGlq3H7q2BEW8GJt3LgStfqzPXhBQQx +fKskMofvVj8j6n/iCIYm6TRH+BfsSdpLUsVQaDv7FHtjLeo9yNDNrKvk9y/83w9INXR U3aPshU5ca5Pk6Hc6KievyKYVIGpKm3nnYhfBIlzyRqDs9sDSqMxmC1o8JLJWpxye+UQ wZBqvFAoXwNnHCT+fAX1ohJsDLtaWnGCCyA16SgIjDDw/ukk/3m013G0b4D9FGkaXV4I wnYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=iVCXEZRpKn6rXtYI2i5rG/1GPmd7Ya4pXNgMc55uuBA=; b=u0OsEUaGR1njdZQ3Tdis7dWP8BwavNZERllx0QQra3nrSupQr/E2cZkEXemxY5yEuw NFtP4qxx/NxNfw1ELWi10Y5W0SOmd2ZwyfaFnNeH93Dt3OfMTmwwKSkUePjDYsqYCmTw Zax2c7cRVz1AJc91rYk6DT76eb4flXBtTtVew2jJy6BUx7Speh1XofsdB2VTQFOy+KEV zafIDp1G4UgOXMjRq/BklOOlgXUNLWcjHffF8eWSTrJWJ6ABB3nZyrZlzPQL38C/RNbI AicW+yIfd7tccHiBownTGtXTwvKJSkBazlZfecbToK5VI8cN0Ueos/yr898mCzOtfWC+ 8RJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=g+azx71p; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n26si28936318edb.197.2021.07.21.13.47.56; Wed, 21 Jul 2021 13:48:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=g+azx71p; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240468AbhGUTlJ (ORCPT + 99 others); Wed, 21 Jul 2021 15:41:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:50108 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237346AbhGUTkx (ORCPT ); Wed, 21 Jul 2021 15:40:53 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A76E861357; Wed, 21 Jul 2021 20:21:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1626898889; bh=QhuNcsunZD2QYw6aN/2PjhF7hYYh0BTHMfQNysrs8x4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=g+azx71pU4jAYLhP++cXgQ7IP6GXrStmWvO5i03OCs6y5OoAb2KzDvBrEysUj1Ihb 8Zi1yKpGXzjR07p7cM50EnZApUW0l9pt2uGI8ngoiIgPRTv0YGcKZWvzbR+jocozHM 031cVGWeKaNmK5ECRzk4PBGWaZpItdfcQsfxuy1x5u6UiO6etZhwSt5cVpYiNNs1PY V8/V154E9bL9wik18M/u4KJ0GZ3BvNXOvJ/L1UizNQEFzLBU4jSdKWHEBCfygQokMO rVfp+w30LueQkMTHShz1EtwK0Ham3NSgHwV5A6rRy2k8oUPSwyzXTWNHPSmRXGWU2m GDhEQBOiCGJTg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 26D025C0E45; Wed, 21 Jul 2021 13:21:29 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, mingo@kernel.org, jiangshanlai@gmail.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@joelfernandes.org, "Paul E. McKenney" , Sergey Senozhatsky Subject: [PATCH rcu 09/18] rcu: Start timing stall repetitions after warning complete Date: Wed, 21 Jul 2021 13:21:17 -0700 Message-Id: <20210721202127.2129660-9-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20210721202042.GA1472052@paulmck-ThinkPad-P17-Gen-1> References: <20210721202042.GA1472052@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Systems with low-bandwidth consoles can have very large printk() latencies, and on such systems it makes no sense to have the next RCU CPU stall warning message start output before the prior message completed. This commit therefore sets the time of the next stall only after the prints have completed. While printing, the time of the next stall message is set to ULONG_MAX/2 jiffies into the future. Reviewed-by: Sergey Senozhatsky Signed-off-by: Paul E. McKenney --- kernel/rcu/tree_stall.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h index e199022dce9dc..42847caa3909b 100644 --- a/kernel/rcu/tree_stall.h +++ b/kernel/rcu/tree_stall.h @@ -647,6 +647,7 @@ static void print_cpu_stall(unsigned long gps) static void check_cpu_stall(struct rcu_data *rdp) { + bool didstall = false; unsigned long gs1; unsigned long gs2; unsigned long gps; @@ -692,7 +693,7 @@ static void check_cpu_stall(struct rcu_data *rdp) ULONG_CMP_GE(gps, js)) return; /* No stall or GP completed since entering function. */ rnp = rdp->mynode; - jn = jiffies + 3 * rcu_jiffies_till_stall_check() + 3; + jn = jiffies + ULONG_MAX / 2; if (rcu_gp_in_progress() && (READ_ONCE(rnp->qsmask) & rdp->grpmask) && cmpxchg(&rcu_state.jiffies_stall, js, jn) == js) { @@ -709,6 +710,7 @@ static void check_cpu_stall(struct rcu_data *rdp) print_cpu_stall(gps); if (READ_ONCE(rcu_cpu_stall_ftrace_dump)) rcu_ftrace_dump(DUMP_ALL); + didstall = true; } else if (rcu_gp_in_progress() && ULONG_CMP_GE(j, js + RCU_STALL_RAT_DELAY) && @@ -726,6 +728,11 @@ static void check_cpu_stall(struct rcu_data *rdp) print_other_cpu_stall(gs2, gps); if (READ_ONCE(rcu_cpu_stall_ftrace_dump)) rcu_ftrace_dump(DUMP_ALL); + didstall = true; + } + if (didstall && READ_ONCE(rcu_state.jiffies_stall) == jn) { + jn = jiffies + 3 * rcu_jiffies_till_stall_check() + 3; + WRITE_ONCE(rcu_state.jiffies_stall, jn); } } -- 2.31.1.189.g2e36527f23