Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp465997pxb; Wed, 3 Mar 2021 07:37:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJyfVji6C7wsTNunXOHPzbsHCwZyoARl/ILZZhFEUi1UX0a05DbpW8T8G6tmaWVfjqyYImL0 X-Received: by 2002:a17:906:d9c9:: with SMTP id qk9mr4253813ejb.504.1614785839285; Wed, 03 Mar 2021 07:37:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614785839; cv=none; d=google.com; s=arc-20160816; b=o1pQGBIdpLPDVoBC2pN/XUyujATrDWhiEqtFCalxVkKnZUgyTY+ebSacl862PdkTOy VFLFS7jyC898AKha1WqtCw5g0Oz3sk0ez5+YZvRcqoTtQuN9wZNxopeYGgU4S8QF4S4j Xl1NQ2xrSGBrFF4ywBEaqUuFFS71HbqI6slNPpP8SEx9eRtZ9KbT0LQz3+qxBn0PSqcV iDsgwwobciUbkm9Wctl93Cpk1F7EJ7QpR+PQEU0D7B8C7KIPapnaNX9wInxAdzMwOyqs JXAW4nvLVxY3zi7iGnWifhPnw1SecPy0J/Lxzb7faOkQJNXN25CzlrmP88w7NnQcn8Pp pPKg== 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=p34ujSmxD/G7MsfPIbIlwtbZlpSmvY8yVjnqWVUoT2E=; b=wftiuc7fmpLOWQBfGBKiaTlzLSMUJTQduezwn8xQeGYTMGoavw6wQGUssgbF2WwOlj Vf4OF/OyN20wHddxlAv8QKfo8l0OnDtfEIRqqJpABN4lQ3BBzDCGgiurG31p/HTmBBHM 2Rmy+zlMHBZI7LNbmADdcy0N9Q0JMJa7h3GRabqzW6rS9pGyMyPGfJAgLrNo2d7ehF1v 9z0NdUUMjzQGUBZl8AzPs3Ba1a2mScg/dRGKLQW4TOabzQ5IAoHRswJDvgQEDAJphxHc FGwr8/F373T4HIMvDPKc2Kozr5odgjNnKJJMyeNlg36NRI2CGf8SA+oRWRoRO15zVxwx RVlg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=cA1jsiDx; 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=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a4si5455263edq.271.2021.03.03.07.36.52; Wed, 03 Mar 2021 07:37:19 -0800 (PST) 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=@linuxfoundation.org header.s=korg header.b=cA1jsiDx; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344668AbhCAXBj (ORCPT + 99 others); Mon, 1 Mar 2021 18:01:39 -0500 Received: from mail.kernel.org ([198.145.29.99]:46584 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238950AbhCARvp (ORCPT ); Mon, 1 Mar 2021 12:51:45 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3AD4764FE1; Mon, 1 Mar 2021 17:00:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1614618047; bh=CVFtk/G+YCxx7uq3QsEWlaBTR4iacFPY5+Atwc1wH2U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cA1jsiDx9uTDOukN27xWDGu727+qHEj2aCi7Wag0tryfmU8AledJ06x6DlwvaMfQs 4/MdoqWo4Np3xE2TESFM4YCux6OmMaeot4Cv9HVY8HTXhASMAMUFQ7UoUPy9JelU7T MxkOIBka7PdTT6gIufrXJ7MT//7lDEX/z2TabMtU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Frederic Weisbecker , "Peter Zijlstra (Intel)" , Ingo Molnar Subject: [PATCH 5.4 287/340] rcu: Pull deferred rcuog wake up to rcu_eqs_enter() callers Date: Mon, 1 Mar 2021 17:13:51 +0100 Message-Id: <20210301161102.412420489@linuxfoundation.org> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210301161048.294656001@linuxfoundation.org> References: <20210301161048.294656001@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Frederic Weisbecker commit 54b7429efffc99e845ba9381bee3244f012a06c2 upstream. Deferred wakeup of rcuog kthreads upon RCU idle mode entry is going to be handled differently whether initiated by idle, user or guest. Prepare with pulling that control up to rcu_eqs_enter() callers. Signed-off-by: Frederic Weisbecker Signed-off-by: Peter Zijlstra (Intel) Signed-off-by: Ingo Molnar Cc: stable@vger.kernel.org Link: https://lkml.kernel.org/r/20210131230548.32970-2-frederic@kernel.org Signed-off-by: Greg Kroah-Hartman --- kernel/rcu/tree.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -579,7 +579,6 @@ static void rcu_eqs_enter(bool user) trace_rcu_dyntick(TPS("Start"), rdp->dynticks_nesting, 0, atomic_read(&rdp->dynticks)); WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) && !user && !is_idle_task(current)); rdp = this_cpu_ptr(&rcu_data); - do_nocb_deferred_wakeup(rdp); rcu_prepare_for_idle(); rcu_preempt_deferred_qs(current); WRITE_ONCE(rdp->dynticks_nesting, 0); /* Avoid irq-access tearing. */ @@ -600,7 +599,10 @@ static void rcu_eqs_enter(bool user) */ void rcu_idle_enter(void) { + struct rcu_data *rdp = this_cpu_ptr(&rcu_data); + lockdep_assert_irqs_disabled(); + do_nocb_deferred_wakeup(rdp); rcu_eqs_enter(false); } @@ -618,7 +620,14 @@ void rcu_idle_enter(void) */ void rcu_user_enter(void) { + struct rcu_data *rdp = this_cpu_ptr(&rcu_data); + lockdep_assert_irqs_disabled(); + + instrumentation_begin(); + do_nocb_deferred_wakeup(rdp); + instrumentation_end(); + rcu_eqs_enter(true); } #endif /* CONFIG_NO_HZ_FULL */