Received: by 2002:a05:7412:3784:b0:e2:908c:2ebd with SMTP id jk4csp2274708rdb; Tue, 3 Oct 2023 16:29:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFWQkKBQBwu8fM0VP4cH202KsJ3sgkXVfreA6j3XAPKUkWFPlxBy3N9ZppIInFc7SsvnT4c X-Received: by 2002:a05:6830:59:b0:6b9:b600:536 with SMTP id d25-20020a056830005900b006b9b6000536mr658838otp.27.1696375775163; Tue, 03 Oct 2023 16:29:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696375775; cv=none; d=google.com; s=arc-20160816; b=K3boLBIQCbl9F85ji8bRiF7V+7pso96D6808dUmy32sNX6jQBhnhpfU37G8/YpWW2d 1Ht1O89HVBrk7/DDL6llJAoYGGMrCkzNM+xNekbhy0RXbJHcJjc96kOqYpNmjQTbORLi 01rYw/HEo7lYhUJzU/mGzW+ED0VBy7Re9lRKTzPyrZiw/Jb/FEFdbFAH0Wi7D/qCMuI0 PpGWvGlvlpv5N8IdWQQ6fU5wVNaPDrn+lGkMrkVEOimhOp7+OxsmLctv8tFlKzmIoMaD xCeQi0ikReCoWjmikGvivhBzRKT9gqWKMVTHSgLDYaz0R9BrjQRwQINjBcVFb0fYCI/+ S6SQ== 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=OomvQ/ntS+F+KEZmgft8HnZu68PFoO+LAgoZegTZ1i4=; fh=F5rAnPhwm0E3NuqHck/WDxlMw3n2ra+y1fhewNj930Q=; b=mi4dpv5vmk+MqE1oJlVacIrDa2xSM9m17/L5s0+o+g7f1PfEFpBpXIkqIAWsDwoEqi id87rgMwpbX3Ds9Hv9It4bL10Yv3DfKSb6obBJZA+Y+ThUviXX4xSF1WOhEkKXS3X+HN NAgtFr6s5qB4rh5OJ02+K0Ne8FDyujO+LD0lmTnCDzzU99jyZRWZmsMc8o36wJJ+Lesl Byf8ysUQmmzKTHcdTjQmc2ZW1Z7+AaYHQRcII1HxT5eCNZLH4B4b98vs8mwO2SMKl9Sz fxHcW7LzOGv6NysuFeJUSk8dpZtM+uH2cFUq0Rgevz4gBns+OnVElsazBYyzcoJuAKRO g91Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="GdXvGbF/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id w190-20020a6382c7000000b00573fbbb7803si2363133pgd.613.2023.10.03.16.29.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Oct 2023 16:29:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="GdXvGbF/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 4500A812A607; Tue, 3 Oct 2023 16:29:29 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236304AbjJCX3W (ORCPT + 99 others); Tue, 3 Oct 2023 19:29:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236052AbjJCX3U (ORCPT ); Tue, 3 Oct 2023 19:29:20 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 98382AF; Tue, 3 Oct 2023 16:29:16 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0AB0DC433CB; Tue, 3 Oct 2023 23:29:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696375756; bh=CgxY0LqJVEeiQkh649qa4IrU9jtDS9lKPNw7zJo199M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GdXvGbF/AWxAYuxckUhWjwbmC2g8wVhiZA+GsiwvL2w7wW+3ZfahRlEMz5eqlQiuZ A8IJPuFHWxv1q/wlKOLNIJY1WtvDfMnk8i3N7Q48BOaAgWNkNDhGw1mujdUdI2cw3y 81C8Ty5CpnNlhTT9W1J4Ucp/RoAQYbKGdM0M9gRpiDwWR9pFGqCdZPBn7WzFKFbdBX Y8SWXIfR5NbltrTaLhYEjbCq/H50C4OQPp+WNM5isy2ztzmkDsomYm/ok6XTUImG1a milVgIIcWpGmrvc69skdFZ9uWD0ycflSvBh02qpWAjAkibTQBcGs+PfDUT//aZRWL3 E5H2XdgVc5U5g== From: Frederic Weisbecker To: "Paul E . McKenney" Cc: LKML , Frederic Weisbecker , Yong He , Neeraj upadhyay , Joel Fernandes , Boqun Feng , Uladzislau Rezki , RCU Subject: [PATCH 2/5] srcu: Only accelerate on enqueue time Date: Wed, 4 Oct 2023 01:29:00 +0200 Message-ID: <20231003232903.7109-3-frederic@kernel.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231003232903.7109-1-frederic@kernel.org> References: <20231003232903.7109-1-frederic@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Tue, 03 Oct 2023 16:29:29 -0700 (PDT) Acceleration in SRCU happens on enqueue time for each new callback. This operation is expected not to fail and therefore any similar attempt from other places shouldn't find any remaining callbacks to accelerate. Moreover accelerations performed beyond enqueue time are error prone because rcu_seq_snap() then may return the snapshot for a new grace period that is not going to be started. Remove these dangerous and needless accelerations and introduce instead assertions reporting leaking unaccelerated callbacks beyond enqueue time. Co-developed-by: Yong He Co-developed-by: Joel Fernandes Co-developed-by: Neeraj upadhyay Signed-off-by: Frederic Weisbecker --- kernel/rcu/srcutree.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c index 9fab9ac36996..560e99ec5333 100644 --- a/kernel/rcu/srcutree.c +++ b/kernel/rcu/srcutree.c @@ -784,8 +784,7 @@ static void srcu_gp_start(struct srcu_struct *ssp) spin_lock_rcu_node(sdp); /* Interrupts already disabled. */ rcu_segcblist_advance(&sdp->srcu_cblist, rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq)); - (void)rcu_segcblist_accelerate(&sdp->srcu_cblist, - rcu_seq_snap(&ssp->srcu_sup->srcu_gp_seq)); + WARN_ON_ONCE(!rcu_segcblist_segempty(&sdp->srcu_cblist, RCU_NEXT_TAIL)); spin_unlock_rcu_node(sdp); /* Interrupts remain disabled. */ WRITE_ONCE(ssp->srcu_sup->srcu_gp_start, jiffies); WRITE_ONCE(ssp->srcu_sup->srcu_n_exp_nodelay, 0); @@ -1721,6 +1720,7 @@ static void srcu_invoke_callbacks(struct work_struct *work) ssp = sdp->ssp; rcu_cblist_init(&ready_cbs); spin_lock_irq_rcu_node(sdp); + WARN_ON_ONCE(!rcu_segcblist_segempty(&sdp->srcu_cblist, RCU_NEXT_TAIL)); rcu_segcblist_advance(&sdp->srcu_cblist, rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq)); if (sdp->srcu_cblist_invoking || @@ -1750,8 +1750,6 @@ static void srcu_invoke_callbacks(struct work_struct *work) */ spin_lock_irq_rcu_node(sdp); rcu_segcblist_add_len(&sdp->srcu_cblist, -len); - (void)rcu_segcblist_accelerate(&sdp->srcu_cblist, - rcu_seq_snap(&ssp->srcu_sup->srcu_gp_seq)); sdp->srcu_cblist_invoking = false; more = rcu_segcblist_ready_cbs(&sdp->srcu_cblist); spin_unlock_irq_rcu_node(sdp); -- 2.41.0