From patchwork Tue Oct 3 23:29:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 148101 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2a8e:b0:403:3b70:6f57 with SMTP id in14csp2413287vqb; Tue, 3 Oct 2023 16:29:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFCO4p12jOWRCm8u0qZQxUzFLuqT7qFv9GGOhHj6Lc0f699c7rsp23aBVW4JNTIYhLKvScq X-Received: by 2002:a05:6808:16a4:b0:3a4:8140:97e8 with SMTP id bb36-20020a05680816a400b003a4814097e8mr1145322oib.14.1696375766365; Tue, 03 Oct 2023 16:29:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696375766; cv=none; d=google.com; s=arc-20160816; b=LF/oxAaFKiJbDFdbVlhHGT39rHeJSFBXnPdbGClIUJhtKyGsNUO3WfkUrgIyDn411Q KDkwosB+xeg8GZTFDEbpnu6ZHy1pQKlzDsduKYyp4JLUCnpGckyN9rdvcjxVIUj1AGaT i60mMnT2ZOe3mxSDGycYYKIet6RfIZY5EOoSmFGHh0AJEdtUtmc45rw8Ch861I/jFzwL ZKyil56+Yvkc7v+sSnjU/3KFImtolcBm28zgCNTjtyN5NALoiEief0tdK/e06g4qgwHF oWPet+OqziV7DrnEOqfysniKsvR+PjNTlck1SOnw1GOQaLseAGJ3loF1C6QhcpMUYBia sx8w== 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 23.128.96.34 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 howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id x65-20020a636344000000b0057751b7788esi2444510pgb.488.2023.10.03.16.29.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Oct 2023 16:29:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; 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 23.128.96.34 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 howler.vger.email (Postfix) with ESMTP id 9B8BE831301F; Tue, 3 Oct 2023 16:29:25 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235508AbjJCX3W (ORCPT + 17 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 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, 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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Tue, 03 Oct 2023 16:29:25 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778778915747167357 X-GMAIL-MSGID: 1778778915747167357 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 Reviewed-by: Like Xu --- 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);