From patchwork Wed Mar 15 19:43:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Fernandes X-Patchwork-Id: 70417 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp91857wrt; Wed, 15 Mar 2023 12:57:30 -0700 (PDT) X-Google-Smtp-Source: AK7set9MB50aKT+D4gzytQ+r76JAjkfMqu1jlIeS4ytYYN/4uMM72aidAB8lSGIYRlG+ZgilIdSs X-Received: by 2002:a17:902:fa4f:b0:19c:be03:d1a3 with SMTP id lb15-20020a170902fa4f00b0019cbe03d1a3mr569962plb.40.1678910250718; Wed, 15 Mar 2023 12:57:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1678910250; cv=none; d=google.com; s=arc-20160816; b=VSZX8ysrW++K+EHLWfwyoFsaUWoaq/SsR6wHym/AxQsgt3S1bkSZln5pN5FhYHXlDw 6+LQHXYahwfjxc/D7D1uG2kp3G3tocabQh75xMNJBYK0/Q8VfD12ZaDBfBJeNGUk2dEL 9/ScsL8vb+kyFMKGKDQecf0VT1QoIkxJe0mu+EqO9Y38wewpxj9NVRcowHDT5tNAAhM4 WHZJnnpzlTiMA+ZdvaKl5Y5J0IwM73p9h+4au03sQpCkLwz33jxgx1+/HGt9iDOfHSMK kd+J1P6H8iDLy3KkRMVJuQQT/JR/4G9litN0gjOo9rtMfYJy5InqkuGnIa3lPvQqIlFC rARw== 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=HkEQfoeE/r4WLsh8kNGxAmPOHd334+QHCg51Sh3MFAg=; b=tVHMeN2KH0BBkKGSe46Le7L5n9vpfd58rzQLG/ryQSWAK7iXRLJVIbjn1o5w1bKLsq 2od+M7YKjMG+kR3un4kJHKHBRbOy64x2rXHuxEMR1bzQBqDG+SaxmAwGu11XIeHKvBeP iaaLFdifrMJfLe9lPniqZboyYYBO4f9j95o9fSP3Z/QAILPS3FsPzxLVwvuY+HDet9p6 W6i7EC3RzCg8hkjsjNwL59Am6x0q/CyD9STYx/uIwCVqTcAkMUSHQT/RCftNhco+1NO6 tqY5utak8KGZ8q8pXC4Taa84ZVCHrzDALyzJk9YXd4XnQH11CB9aWX6O1nRUq5s5NQd7 O/qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b=NsbVHBk5; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p2-20020a170902780200b0019e8928b3besi5920408pll.248.2023.03.15.12.57.17; Wed, 15 Mar 2023 12:57:30 -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=@joelfernandes.org header.s=google header.b=NsbVHBk5; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232345AbjCOTpK (ORCPT + 99 others); Wed, 15 Mar 2023 15:45:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232186AbjCOToj (ORCPT ); Wed, 15 Mar 2023 15:44:39 -0400 Received: from mail-qt1-x82d.google.com (mail-qt1-x82d.google.com [IPv6:2607:f8b0:4864:20::82d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A90611656 for ; Wed, 15 Mar 2023 12:44:32 -0700 (PDT) Received: by mail-qt1-x82d.google.com with SMTP id h19so1348214qtn.1 for ; Wed, 15 Mar 2023 12:44:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelfernandes.org; s=google; t=1678909471; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HkEQfoeE/r4WLsh8kNGxAmPOHd334+QHCg51Sh3MFAg=; b=NsbVHBk5ucAJrVO0iXKlJhOtGw18iXzyZV1oDL1C6C9ke9qWst/j13WDaObekR3JVD Gy9u/S/7VpT3P5tCkuY6pVAwD/NlOuk1Bc2MzuzCcDgDBgAzUFWtF30KYky7wh+DeyGP 13pEof4SKJJFM4rs5V9fWt8k7WF0aESemcz5Y= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678909471; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HkEQfoeE/r4WLsh8kNGxAmPOHd334+QHCg51Sh3MFAg=; b=KGg40vZH6icYwlvgRJonZHR4m1mQulrONYRgRGofTCHuJBwB2kdcO0QOzMqSRTUodi SSJVicD5RibAeUZpH0/5ELqoY+DY0fkKgjRZp2ZBydE1qpqXAsqJ3lt1IBV186rdqsKM otbGxqznqzBgFWuyEIAPGrB5wFuBBMNkQOueDMCDGpcTGSuz5ho55pD/GRWSxMv+5bhy p73AqmImZSWFfDAHQ3EIYQNbOu1s6NBmtarBens31mNYJKlsYsTsf/rMFuUz/6We/fe1 WnGa74W+8nXknHTKQztdbc6MHK2rXfX1UWgtJyW/3Y8WmPzcLqx83+vEH/CDTnstV/kr +QQg== X-Gm-Message-State: AO0yUKWdDJ6hepmUu0O63i+ue3tEHkS0YchDHUCAndy8tBBpKnD1WL4+ BQ6TDKgVXmazRWx9rtDrg49TVsfGJ9NOaIwbZrY= X-Received: by 2002:a05:622a:180d:b0:3bf:e2f8:c6a4 with SMTP id t13-20020a05622a180d00b003bfe2f8c6a4mr1984193qtc.61.1678909471190; Wed, 15 Mar 2023 12:44:31 -0700 (PDT) Received: from joelboxx.c.googlers.com.com (129.239.188.35.bc.googleusercontent.com. [35.188.239.129]) by smtp.gmail.com with ESMTPSA id c15-20020ac8660f000000b003b86b088755sm4346666qtp.15.2023.03.15.12.44.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Mar 2023 12:44:30 -0700 (PDT) From: "Joel Fernandes (Google)" To: linux-kernel@vger.kernel.org, Thomas Gleixner , Peter Zijlstra , Andy Lutomirski , Frederic Weisbecker , Ingo Molnar Cc: "Paul E . McKenney" , Joel Fernandes Subject: [PATCH 3/9] entry/rcu: Check TIF_RESCHED _after_ delayed RCU wake-up Date: Wed, 15 Mar 2023 19:43:43 +0000 Message-Id: <20230315194349.10798-3-joel@joelfernandes.org> X-Mailer: git-send-email 2.40.0.rc1.284.g88254d51c5-goog In-Reply-To: <20230315194349.10798-1-joel@joelfernandes.org> References: <20230315194349.10798-1-joel@joelfernandes.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760464995167647711?= X-GMAIL-MSGID: =?utf-8?q?1760464995167647711?= From: Frederic Weisbecker RCU sometimes needs to perform a delayed wake up for specific kthreads handling offloaded callbacks (RCU_NOCB). These wakeups are performed by timers and upon entry to idle (also to guest and to user on nohz_full). However the delayed wake-up on kernel exit is actually performed after the thread flags are fetched towards the fast path check for work to do on exit to user. As a result, and if there is no other pending work to do upon that kernel exit, the current task will resume to userspace with TIF_RESCHED set and the pending wake up ignored. Fix this with fetching the thread flags _after_ the delayed RCU-nocb kthread wake-up. Fixes: 47b8ff194c1f ("entry: Explicitly flush pending rcuog wakeup before last rescheduling point") Signed-off-by: Frederic Weisbecker Signed-off-by: Paul E. McKenney Signed-off-by: Joel Fernandes (Google) --- kernel/entry/common.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/entry/common.c b/kernel/entry/common.c index 846add8394c4..a134e26b58c6 100644 --- a/kernel/entry/common.c +++ b/kernel/entry/common.c @@ -192,13 +192,14 @@ static unsigned long exit_to_user_mode_loop(struct pt_regs *regs, static void exit_to_user_mode_prepare(struct pt_regs *regs) { - unsigned long ti_work = read_thread_flags(); + unsigned long ti_work; lockdep_assert_irqs_disabled(); /* Flush pending rcuog wakeup before the last need_resched() check */ tick_nohz_user_enter_prepare(); + ti_work = read_thread_flags(); if (unlikely(ti_work & EXIT_TO_USER_MODE_WORK)) ti_work = exit_to_user_mode_loop(regs, ti_work);