Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp2157033pxb; Fri, 25 Mar 2022 12:06:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxor7fHOzIyCymMgErlMmDrm7ytNDxE0IAMJvGVKWLuzzTuxlOHML7/zJPBWOwoN9TbxsQs X-Received: by 2002:a17:90b:4a92:b0:1c7:5aa4:2a74 with SMTP id lp18-20020a17090b4a9200b001c75aa42a74mr25199543pjb.239.1648235182383; Fri, 25 Mar 2022 12:06:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648235182; cv=none; d=google.com; s=arc-20160816; b=I8OuCTuXvE/ee/rK8LyagZZM+Lf6ADnRT7Jh3V9dzeSZkI7O66fzOVknDcIM9u+Ek9 9a1yaV6652PH9M51kv5URQtmEkJV+Dh6n1yYbWlPTssHA/9zO7NmxgOT7eYG+24rmzli X0zFLRHslPkJrtGBNIwBATsRyGki5LuBGhagB6ndG89ylZYKK1zkhk/rW7Jqe67kGyPi xnfDv0R+eVGyRWm2wGiCg6ufdZGTuPBR2sw7kbp4uazO93lZiRBQNIqbGsZJrjh/Qf0e tj2GcGBZv5LtJ+s6Cy4JvrTOde0s2s3tn071R3dufcvzicgKMDX/SH4xYTSR2VpecUtC h6BA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Y2NHdv5Is5vku69ztRu0TD8C+Y5bfj3QSfND2vBCQxg=; b=TkjFDnv3v0TVBemynTqccJF/sO1xb34wdmvhlNbaZf4Gh93kzYrRad5nin+ufkexPD MgAWFNdxUmJgubFmmc99nfyz4wyLJMPx8Q29MmODOLz3aMMXqHsMjVseX/4D13uLwRT0 OyRwTOUVYtCOVps456QiV5aQmPxPIhf48O3Ogbg9LdyN4TdKLfDeli1wux6/m5OWA9cm JbT5B2nwHIrJ8/gQO0YF6R8PBVyujKIpPhJtHipMQZWKHXc0vOAsf15kCiILLJHUSWpa vG9Q3bNTqByJ4RqKm8wIasrxjUiXjssGDqvcPqudJPu4hOD4L/FycRUBcH2kD2lCKuDv KK1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=S5jFVyvk; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id 124-20020a630382000000b003816043f0c0si2927067pgd.693.2022.03.25.12.06.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Mar 2022 12:06:22 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=S5jFVyvk; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id CCDC1156C4B; Fri, 25 Mar 2022 11:17:05 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245356AbiCYPW7 (ORCPT + 99 others); Fri, 25 Mar 2022 11:22:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1376270AbiCYPVR (ORCPT ); Fri, 25 Mar 2022 11:21:17 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 907A3E338B; Fri, 25 Mar 2022 08:16:00 -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 ams.source.kernel.org (Postfix) with ESMTPS id 39DEEB82903; Fri, 25 Mar 2022 15:15:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8CAB7C340F4; Fri, 25 Mar 2022 15:15:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1648221356; bh=ZGqHvFAw8zYFl5sKx0Vfl0zk5smIKUztTYJffKlRplU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=S5jFVyvk7Xpa9laMGrjqoGkVSavZbsG/ecyhvQJyippC5TNnAgVUZ4xQ61T2ZQ5PZ 4s2mqa8+rQdKoE8kI1HM8hNvgVbz55FNbqTm+WMEct4oZ3aZEv+GFn4WD58+tYMDPH S5/jOMOYcq1XXEOq4NWhNpnkb6Eodklidzs2PGas= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tim Murray , Joel Fernandes , Neeraj Upadhyay , "Uladzislau Rezki (Sony)" , Todd Kjos , Sandeep Patil , "Paul E. McKenney" Subject: [PATCH 5.15 31/37] rcu: Dont deboost before reporting expedited quiescent state Date: Fri, 25 Mar 2022 16:14:32 +0100 Message-Id: <20220325150420.820554308@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220325150419.931802116@linuxfoundation.org> References: <20220325150419.931802116@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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 From: Paul E. McKenney commit 10c535787436d62ea28156a4b91365fd89b5a432 upstream. Currently rcu_preempt_deferred_qs_irqrestore() releases rnp->boost_mtx before reporting the expedited quiescent state. Under heavy real-time load, this can result in this function being preempted before the quiescent state is reported, which can in turn prevent the expedited grace period from completing. Tim Murray reports that the resulting expedited grace periods can take hundreds of milliseconds and even more than one second, when they should normally complete in less than a millisecond. This was fine given that there were no particular response-time constraints for synchronize_rcu_expedited(), as it was designed for throughput rather than latency. However, some users now need sub-100-millisecond response-time constratints. This patch therefore follows Neeraj's suggestion (seconded by Tim and by Uladzislau Rezki) of simply reversing the two operations. Reported-by: Tim Murray Reported-by: Joel Fernandes Reported-by: Neeraj Upadhyay Reviewed-by: Neeraj Upadhyay Reviewed-by: Uladzislau Rezki (Sony) Tested-by: Tim Murray Cc: Todd Kjos Cc: Sandeep Patil Cc: # 5.4.x Signed-off-by: Paul E. McKenney Signed-off-by: Greg Kroah-Hartman --- kernel/rcu/tree_plugin.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -554,16 +554,16 @@ rcu_preempt_deferred_qs_irqrestore(struc raw_spin_unlock_irqrestore_rcu_node(rnp, flags); } - /* Unboost if we were boosted. */ - if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex) - rt_mutex_futex_unlock(&rnp->boost_mtx.rtmutex); - /* * If this was the last task on the expedited lists, * then we need to report up the rcu_node hierarchy. */ if (!empty_exp && empty_exp_now) rcu_report_exp_rnp(rnp, true); + + /* Unboost if we were boosted. */ + if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex) + rt_mutex_futex_unlock(&rnp->boost_mtx.rtmutex); } else { local_irq_restore(flags); }