From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A98C0CA5537 for ; Wed, 13 Sep 2023 16:12:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F1D596B01AB; Wed, 13 Sep 2023 12:12:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ECD446B01AE; Wed, 13 Sep 2023 12:12:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D944A6B01B1; Wed, 13 Sep 2023 12:12:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C7A476B01AB for ; Wed, 13 Sep 2023 12:12:54 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 923E2A038A for ; Wed, 13 Sep 2023 16:12:54 +0000 (UTC) X-FDA: 81232067868.18.4192A8B Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf26.hostedemail.com (Postfix) with ESMTP id 4C5C814000F for ; Wed, 13 Sep 2023 16:12:52 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=LQWTxO3H; dmarc=none; spf=none (imf26.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694621573; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0VGAAv8ocSEF1ZOwAo/WgYtVv+nBuEUSgAp5uPu6Sb8=; b=pGSzS0/6nV3vDEans3tDEfI+zcuDYOBEX+Dh/ESE7zjQwsi9Adu0+s8W09EnJqklPBjbbI J6S6IEEAxBk+w2prBiVHko8apgCklAAdjj0JMMUS9O9J6tO2G+JIgvJ6vjF6g7S9Ly4bhd YPAGRok0T+yZGZBjSB0exoWchHP9bQY= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=LQWTxO3H; dmarc=none; spf=none (imf26.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694621573; a=rsa-sha256; cv=none; b=yPR8ue0eAl1Pv4693CymcwR5ukILN7WCj4kIU6K5iIPszmWeI3YEXF8Fj6nXVQ9VOHaGP+ N1gXJ9PAqF8JZmfYr71HfMUX55MCxQeyQQljpkaHMxj01DEMwF748csi88NYxAFBQCTaiB mbfyYnYQhUi1YElFyM6caeIbZcHC+nw= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:To:From:Date:Sender:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description; bh=0VGAAv8ocSEF1ZOwAo/WgYtVv+nBuEUSgAp5uPu6Sb8=; b=LQWTxO3HhrMARS7xqTbvzbxQOz yN1wUFLAnZTtILBMCVmzs4KTKpNxytMcYL9+20TSLB939unr63etm2+8nit/maRGfWRxHkAWpzztp WShYWB5ItaMsRA+r1bG2AqHkjTWW34t+8880LEgkM6eF9lfVYLQE/+SgNVRrpzXay0nmEdt1H86PQ 0YJ/tZ+etTc1wwIBaUlbdu7+ydyW4PXcb8VPy7vudja4W16MAFxxEwNrl3j5tmjn+wP59QX/j3dvf TdM0pIp3tBIEKz38NfFLVLoIBbn2NrDRM2ACmCXadCONfCxogkSkAgfw1+7w13WKLMEStQNGVLo6I 6cYOcvQQ==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1qgSTk-00Eogb-Nt; Wed, 13 Sep 2023 16:12:36 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000) id 62888300348; Wed, 13 Sep 2023 18:12:36 +0200 (CEST) Date: Wed, 13 Sep 2023 18:12:36 +0200 From: Peter Zijlstra To: "Liam R. Howlett" , Andrew Morton , maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Geert Uytterhoeven , "Paul E. McKenney" , Christophe Leroy , Andreas Schwab , Matthew Wilcox , Peng Zhang , Ingo Molnar , Juri Lelli , Vincent Guittot , "Mike Rapoport (IBM)" , Vlastimil Babka Subject: Re: [PATCH] init/main: Clear boot task idle flag Message-ID: <20230913161236.GI692@noisy.programming.kicks-ass.net> References: <20230913005647.1534747-1-Liam.Howlett@oracle.com> <20230913135246.GH692@noisy.programming.kicks-ass.net> <20230913145125.xssion4ygykunzrc@revolver> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230913145125.xssion4ygykunzrc@revolver> X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 4C5C814000F X-Stat-Signature: i7xxr7pbbu7tjhtz9m73h8ruxrfwm1rt X-Rspam-User: X-HE-Tag: 1694621571-820337 X-HE-Meta: U2FsdGVkX18LFuPVU6xfhSQjidA9TQen5ho9Bp5uvzCfY1EPVB1x1TDRyACr28AXkthFu0XnMU/iuv9iPTacrq7t/d03lqjv+HEjuRuh5yAvgyiNpxsdCkEm+7/h4IZ5SQ/xGEOrZUNGr8+dXMvKENP4ibPybi9s5H5Uvj0OtF4nSOJtLHiQqW0s3KmtUcC4izM4gx9XfI+P2Boq2S6CvsmiUKbPFuB4anmqUhaRV/yyQ+TcFcjTMDCqdbRPf4Q+KOMRYkbXfXulpufnChYXbJ59HURFsFq93OHlk6mvKC4Z6x6q95bMj6egT0g0IHS5B0EcghTyhE11CrxO0mH5rjMje9Bu117hf40k5XWgDLi00/7CK+VfYeNWqDwtUeUpNW6t3tj9OGq8UvRe+vF56YtflENznNivr7CW6Vbq3Oj626KHkuVSlOhAFN+lFcrheMQY9ut/8BWSDB65SeJC54eIaUmRcTqEhRCr4A7emnfT+qGoljnZdPjTjGlOTxb8RkAApZYFHmetuSzhx+gmmLhC+8jy6SvXZla/TwzkOSsL9QkxRiXBluysO1BBji+PqodHg1rWgvzkC382IIIT/B7gzgV5dtxyY0YO4FfYtQt9yy+jwovzVemAB74QjlN0j/sTHBa4oFA4AzEm8JCjaaCdQYUbM3c+m6hn9ncNWEdn5TdnBZkMEVJY7kJl4ZVYEN7EyxrlAC5HitJVa6J+ZQhDwiUOONcmnsXSzLZW6o1qyzFYfXY3x/Y+PLafH0kvpTTLFFSNHyeJYToo3G61aOPCmRnLwbGJWT/OdjQwNKxo77IvMP0L7ngnWWmpnSI4VkhRtQURFXomt4xPlc8oa77NicWPlk+5NeQr2Dqxn5+P/cOS2q/hGZDwu6qJwvzytrKXh2YE+bmWw3Gc3aYmyxcU1yXCu+zhQabw/FIEChKF2u0GN6J7TpZxfV7ZA3SiHbjP+lAoQDRxb5QxLFU 7IarHWF0 9QCKIQCtbzuugfvfB+bH+OT8VLO1auYf5bgry5Pd/KKqCFV/ag5eUfkmmsEbZZcoRrcb1w/1+7yxVv295HCl4rnlAXwtIRpdzkEofHa5GBwatJnzDfq8/QGCp4r/MzJltxeF046bJAW9jPfbVoNbY0IHy9ayYcHOlA1ZHYKMXDwv/purRPFYPBh1LSP7zvWwVwDiW X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Sep 13, 2023 at 10:51:25AM -0400, Liam R. Howlett wrote: > * Peter Zijlstra [230913 09:53]: > > On Tue, Sep 12, 2023 at 08:56:47PM -0400, Liam R. Howlett wrote: > > > > > diff --git a/init/main.c b/init/main.c > > > index ad920fac325c..f74772acf612 100644 > > > --- a/init/main.c > > > +++ b/init/main.c > > > @@ -696,7 +696,7 @@ noinline void __ref __noreturn rest_init(void) > > > */ > > > rcu_read_lock(); > > > tsk = find_task_by_pid_ns(pid, &init_pid_ns); > > > - tsk->flags |= PF_NO_SETAFFINITY; > > > + tsk->flags |= PF_NO_SETAFFINITY | PF_IDLE; > > > set_cpus_allowed_ptr(tsk, cpumask_of(smp_processor_id())); > > > rcu_read_unlock(); > > > > > > > Hmm, isn't that pid-1 you're setting PF_IDLE on? > > Yes, thanks. I think that is what Geert is hitting with my patch. > > debug __might_resched() in kernel/sched/core.c is failing to return in > that first (complex) if statement. His report says pid 1 so this is > likely the issue. > > > > > The task becoming idle is 'current' at this point, see the > > cpu_startup_entry() call below. > > > > Would not something like so be the right thing? > > > > > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > > index 2299a5cfbfb9..802551e0009b 100644 > > --- a/kernel/sched/core.c > > +++ b/kernel/sched/core.c > > @@ -9269,7 +9269,7 @@ void __init init_idle(struct task_struct *idle, int cpu) > > * PF_KTHREAD should already be set at this point; regardless, make it > > * look like a proper per-CPU kthread. > > */ > > - idle->flags |= PF_IDLE | PF_KTHREAD | PF_NO_SETAFFINITY; > > + idle->flags |= PF_KTHREAD | PF_NO_SETAFFINITY; > > I am concerned this will alter more than just the current task, which > would mean more modifications later. There is a comment about it being > called 'more than once' and 'per cpu' so I am hesitant to change the > function itself. > > Although I am unsure of the call path.. fork_idle() -> init_idle() I > guess? There's only 2 ways to get into do_idle(), through cpu_startup_entry() and play_idle_precise(). The latter already frobs PF_IDLE since it is the forced idle path, this then leaves cpu_startup_entry() which is the regular idle path. All idle threads will end up calling into it, the boot CPU through the rest_init() and the SMP cpus through arch SMP bringup. IOW, this ensures all idle loops will have PF_IDLE set but not the pre-idle loop setup code these threads run.