From patchwork Thu Oct 19 12:01:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 155466 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2010:b0:403:3b70:6f57 with SMTP id fe16csp330211vqb; Thu, 19 Oct 2023 05:02:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHOGL6nYfN/KuppW7MBWs9RLy2VjJFVnovZr1biLhuh98ksqp3kdllk5F8VWLDgRw1Oa4wX X-Received: by 2002:a05:6a00:a24:b0:6be:4228:6970 with SMTP id p36-20020a056a000a2400b006be42286970mr1900924pfh.21.1697716967332; Thu, 19 Oct 2023 05:02:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697716967; cv=none; d=google.com; s=arc-20160816; b=jcsEDuIWCpWQrbXVjyRL+jIgnR/Z/mBTXqYOjZufk6mu3Rf3x8Vxl7sycIY79ky1nV k0pVm6pwFN/aNZlTFs3ksJs92byTuVJJgcvZL6JEpch0H8RO6vm85xgVVKSMqlGOmmrQ ERu5bg6V2WhCgbkHhFSfnOWdAK1VGGLRzClkIJVtYnyJd8CIek2+msYU9o6Ql4aueN5N bfAwlDkMJwMfcBxySgermttJ4Bm55qnaTwLG0HC9G5RCKaBY++AqfvjRjX2Hz0qG0ZRB 6FYjA5nKk8VZurSNB8Gh+Sj7u8ASMHBDBZAIROCHaExwzMIjA2ktBMmWNbQz9QNbtaBz 9+FQ== 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=dNBdmFSg0XYn3PtTWO6UiLYC/+2CjrCazYUIYP6q5wY=; fh=5+YmRexi1ebesok90zB32639YOcyyiie3F5fnFFoKq8=; b=z/zV9OzNUnCI+K3wEzBO201YUJ2bUwefjR6RHdzjwpoL/Kg0jr878pbxvZOmMdXiEf oiZkO0uDXE4FADZVBc/iyOrDNXnj+iiF4hoSWCjPFmU2KozIUoC82BYpxnVkHmEYxw3Z ICDX38M1/L+7UXF7JIdKVByTZ/GOZ0bYhYsMvIjWXcpIutHXY1u9tvbSvcONO8ySozMm 6t6ib2E2GQMQWCAon++kpKIeYKRDSYxANY0eDe+Y4vVbOtV3NZmPJ+Na+Fkv9zABdjM2 roh1bgXmkGFR71ROFo25RqvX5FL/A+lPzKgTViT8GeoG14KRClnxUllaw/29zwMajkVJ yllA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=CmRYaHD8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 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 agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id g2-20020a056a0023c200b006be01b51af8si6439189pfc.33.2023.10.19.05.02.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Oct 2023 05:02:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=CmRYaHD8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 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 agentk.vger.email (Postfix) with ESMTP id 0F374818CCB3; Thu, 19 Oct 2023 05:02:30 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345543AbjJSMCW (ORCPT + 25 others); Thu, 19 Oct 2023 08:02:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49878 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345524AbjJSMCR (ORCPT ); Thu, 19 Oct 2023 08:02:17 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 94893139; Thu, 19 Oct 2023 05:02:15 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C12E1C433CB; Thu, 19 Oct 2023 12:02:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697716935; bh=GEHGTe6rFYiWYuzzhF7E1xB6zZAaH9xdzrwx/Nmj808=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CmRYaHD8Ss4xqJGRjGttd2Ez3eIm5v7dMgvaQckYHR1EhHiD/bxalxyYOhADE6CYF pv9sC3eH9C4dC7pZbDUByJeoSIxyUajO/iVjWz0oZvJPx2wuTxt9QewagVf1+l92YS Miu9UbJYlH124Yl0Zmsc67DYiODAjiBYCc++FvCm7PuyCQ24hbWxue9Hvjq+hhadmD 3pFGGLtNdaIoi1yPIrT6qrLznaP/e+TJbtx1COqngefXOtJ//YgBj4otkOrGUCbDFR FPVcwgiY5VBo2hI1utzZ/VozYbkaBQSUy6DQAsS/DuMw+P9ze8obPsh/1OLAVgXjg6 cug2En7U8fTGw== From: Frederic Weisbecker To: LKML Cc: Zhen Lei , Boqun Feng , Joel Fernandes , Josh Triplett , Mathieu Desnoyers , Neeraj Upadhyay , "Paul E . McKenney" , Steven Rostedt , Uladzislau Rezki , rcu , Frederic Weisbecker Subject: [PATCH 2/6] rcu: Don't redump the stalled CPU where RCU GP kthread last ran Date: Thu, 19 Oct 2023 14:01:58 +0200 Message-Id: <20231019120202.1216228-3-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231019120202.1216228-1-frederic@kernel.org> References: <20231019120202.1216228-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email 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 (agentk.vger.email [0.0.0.0]); Thu, 19 Oct 2023 05:02:30 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780185266546472944 X-GMAIL-MSGID: 1780185266546472944 From: Zhen Lei The stacks of all stalled CPUs will be dumped in rcu_dump_cpu_stacks(). If the CPU on where RCU GP kthread last ran is stalled, its stack does not need to be dumped again. We can search the corresponding backtrace based on the printed CPU ID. For example: [ 87.328275] rcu: rcu_sched kthread starved for ... ->cpu=3 <--------| ... ... | [ 89.385007] NMI backtrace for cpu 3 <--------| [ 89.385179] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 5.10.0+ #22 <--| [ 89.385188] Hardware name: linux,dummy-virt (DT) [ 89.385196] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--) [ 89.385204] pc : arch_cpu_idle+0x40/0xc0 [ 89.385211] lr : arch_cpu_idle+0x2c/0xc0 ... ... [ 89.385566] Call trace: [ 89.385574] arch_cpu_idle+0x40/0xc0 [ 89.385581] default_idle_call+0x100/0x450 [ 89.385589] cpuidle_idle_call+0x2f8/0x460 [ 89.385596] do_idle+0x1dc/0x3d0 [ 89.385604] cpu_startup_entry+0x5c/0xb0 [ 89.385613] secondary_start_kernel+0x35c/0x520 Signed-off-by: Zhen Lei Reviewed-by: Joel Fernandes (Google) Signed-off-by: Paul E. McKenney Signed-off-by: Frederic Weisbecker --- kernel/rcu/tree_stall.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h index b5ce0580074e..fc04a8d7ce96 100644 --- a/kernel/rcu/tree_stall.h +++ b/kernel/rcu/tree_stall.h @@ -534,12 +534,14 @@ static void rcu_check_gp_kthread_starvation(void) data_race(READ_ONCE(rcu_state.gp_state)), gpk ? data_race(READ_ONCE(gpk->__state)) : ~0, cpu); if (gpk) { + struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu); + pr_err("\tUnless %s kthread gets sufficient CPU time, OOM is now expected behavior.\n", rcu_state.name); pr_err("RCU grace-period kthread stack dump:\n"); sched_show_task(gpk); if (cpu_is_offline(cpu)) { pr_err("RCU GP kthread last ran on offline CPU %d.\n", cpu); - } else { + } else if (!(data_race(READ_ONCE(rdp->mynode->qsmask)) & rdp->grpmask)) { pr_err("Stack dump where RCU GP kthread last ran:\n"); dump_cpu_task(cpu); }