Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp1377270rwi; Mon, 10 Oct 2022 15:44:26 -0700 (PDT) X-Google-Smtp-Source: AMsMyM66vNOsNajSU3FVqnJfqENtmY4AK3sfzbNZBEQvk1tIpmktvqiQYAxIT0z3ZoUnIBUigq2C X-Received: by 2002:a17:902:db11:b0:179:ffcb:a636 with SMTP id m17-20020a170902db1100b00179ffcba636mr21256110plx.85.1665441866389; Mon, 10 Oct 2022 15:44:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665441866; cv=none; d=google.com; s=arc-20160816; b=KhmCqn4+0W4RMGu7bPfXtVB4vHvwBGpBewUU98IFWjOmd0A02OM7pwQlhDRNhMk9UK rb5pqe5P0c49uOAn5+9E6U0G8Aj0bDG/KivrvnQTbzz3f6iBzsRTq3ABmo/3Z2eCFyUH EVBa+Eu1JJMpm7fFh1bhoA8Rhu8MQqdv3hU3YYp1B1SNZzEM49u3pKI0mGt71U4H6iTn vGjz3FQqeZoiqEgX/nZBB9uLXjkBQ5YiUSadWsev7WJ/EUexNdOOjgJJXj7XG21kGTaX 0aYZI0ilpcsRD+PQJKCG0O9TJ1mZes/yu7Io1co/xCLpYdAGd6c7orZhyX1M/yCViRB3 VbUA== 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=3TU/yvCTNjUgi7HqWZ2o4oNWImsfHtq90xpUwu720p0=; b=Dzoti+w+e4j/86HPft0YMEuf7tR58v2UBllaNgoOQ1fXFiruNmGFG8fXm/XOTbX0+p TJiz21AKkyb33wQq3XGTpZjH94LwR8KXQncXOGqDmO2RG9Qvb5FrTvzoSTgGe3DIYkeu jzzl0E5LQKvJV7UnuDA7Zn/dJqu/hvfM7/NcwYDP3/p56z3Lrdi7KcGbtUMdTSzTmsXC 4XbqQNi+vNC8gpr75TIFklmXiqZ52TOjdKkt4lyqH3tyYjRD5kSCvqjKEuPf0Vs4dwM1 jJbcsbgPdgexQ4NcqkHavLBf+M2aISA/rEqunCo9GOR5wNyjBxvsZpZcVIMAuIEbX4xW uP0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=pKh4RZXI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s14-20020a17090b070e00b0020d65f31df8si611824pjz.143.2022.10.10.15.44.14; Mon, 10 Oct 2022 15:44:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=pKh4RZXI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S229831AbiJJWkU (ORCPT + 99 others); Mon, 10 Oct 2022 18:40:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59356 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229795AbiJJWkM (ORCPT ); Mon, 10 Oct 2022 18:40:12 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2AA4B79A6D for ; Mon, 10 Oct 2022 15:40:11 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id B953C61041 for ; Mon, 10 Oct 2022 22:40:10 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 208B9C433C1; Mon, 10 Oct 2022 22:40:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1665441610; bh=H2YGNl94EtWVuEFBnke9BVCHAd1Iq68IOesSFyDAWlE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pKh4RZXIaZu+R1xYeRxw5KG0EqoPARcV1Z7Ul3FCtn9+fCoSsOsRPM2CienfrsSOj pE3yp4bxygcIkR0Choxn+edOsKx9gNiBDVidxle4LuNgwJlVjqeXZJQUhXlTj3IyMY AqO/v5vrTxfq/fRrD/FCH7BWYjqI/Fmi7QImwXojtFotv3IYzpi3CuTByYxiAfm0Ct klvlNGW2KY/FKJEIY+KkDHEIeJo0UNxiVaqhvtJ0nOS355Nv5FkqfkELIyhNCJAbWQ eAobLO9eE5RSjYhdEQTluxyvM9o3AGqHsW5AfAOGIa2lRkDhapuB66ayei1lhxVNHr ywcjA3SOa7Rgw== From: Frederic Weisbecker To: "Paul E . McKenney" Cc: LKML , Frederic Weisbecker , Joel Fernandes Subject: [PATCH 2/2] rcu/nocb: Spare bypass locking upon normal enqueue Date: Tue, 11 Oct 2022 00:39:56 +0200 Message-Id: <20221010223956.1041247-3-frederic@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221010223956.1041247-1-frederic@kernel.org> References: <20221010223956.1041247-1-frederic@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When a callback is to be enqueued to the normal queue and not the bypass one, a flush to the bypass queue is always tried anyway. This attempt involves locking the bypass lock unconditionally. Although it is guaranteed not to be contended at this point, because only call_rcu() can lock the bypass lock without holding the nocb lock, it's still not free and the operation can easily be spared most of the time by just checking if the bypass list is empty. The check is safe as nobody can queue nor flush the bypass concurrently. Signed-off-by: Frederic Weisbecker --- kernel/rcu/tree_nocb.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h index 094fd454b6c3..30c3d473ffd8 100644 --- a/kernel/rcu/tree_nocb.h +++ b/kernel/rcu/tree_nocb.h @@ -423,8 +423,10 @@ static bool rcu_nocb_try_bypass(struct rcu_data *rdp, struct rcu_head *rhp, if (*was_alldone) trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("FirstQ")); - WARN_ON_ONCE(!rcu_nocb_flush_bypass(rdp, NULL, j)); - WARN_ON_ONCE(rcu_cblist_n_cbs(&rdp->nocb_bypass)); + if (rcu_cblist_n_cbs(&rdp->nocb_bypass)) { + WARN_ON_ONCE(!rcu_nocb_flush_bypass(rdp, NULL, j)); + WARN_ON_ONCE(rcu_cblist_n_cbs(&rdp->nocb_bypass)); + } return false; // Caller must enqueue the callback. } -- 2.25.1