Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp2500938pxb; Mon, 18 Apr 2022 01:28:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzT+lBcJZZd2TYgcOiDCKBv7RKaWG3BDl1Xo7TCms1JqXs9s9pGoeiPMxxO+8bQKdMKYh9J X-Received: by 2002:a17:906:1cd1:b0:6ec:c59:6a1d with SMTP id i17-20020a1709061cd100b006ec0c596a1dmr7374038ejh.77.1650270533650; Mon, 18 Apr 2022 01:28:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650270533; cv=none; d=google.com; s=arc-20160816; b=XzSzYvulCNMuEQrrIx/g0spKst0MB5GM86uLmOio/qwMO4XogvD+1EKHuC18Pzp3xQ kqsE6QjKH8NROs8PVOd6xzUzwHWAIODNdeyTScHD+/Pf8eRnkLs0Md017y6Ot2FPwPL7 iINXAHhKLyeGgR66pESjdhNlaivmp/VFd2e38Wkfl/oQD1d3Zf/svYPfnJDo/ZJLu25t IQroXwjwkFxufW9a0D+iQOWq5KwOoMHA2U+a7Ndc8+rMaiPC+UQ+swqNx3VgU/fIozd5 /j/izNqIA0iRfTSJLDhVp+aO7+4WCzTSbMXPy497+7gKwgdzBuL9R2OM2lKwiTrEwoCd l8lQ== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=2x14r91CBQD4kQRAmO7qT3fqu0Rss/iUo6NrPr0sqPQ=; b=rzQw4ecNIRd5MhuikIO+522b7Kkdi6k54Q3y+q3PA85H1vXl0o8Bb4v5mrjuGXg6f8 Kop7aZ+xc+mmQbOtoRLZadSctPZtNSStey2gdxUIQObv2GQrn9c+cCghxJSG39ftreMA 1JhtXOcpghIBI+ZbboTT3JELlY2IQbpZ6C4tqhgm9xDxh5VXOtGQQgACokyGHr73WU/r XjFPV9PsizUHhcd56ktrd4e6/bRUEAtnYng3Eietm1kPX3OLXsqRRPPOI8kkYsZwog// iW+0CXmXN2bSr7F7P1WEhRgriaZch2w+o1AYCxDoBCCoGZxeNq36gkdQwvzyJKZ/6WyX GKOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=gm9pLszO; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a9-20020a17090680c900b006e7f5e5c677si5395708ejx.969.2022.04.18.01.28.29; Mon, 18 Apr 2022 01:28:53 -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=@gmail.com header.s=20210112 header.b=gm9pLszO; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236500AbiDREkU (ORCPT + 99 others); Mon, 18 Apr 2022 00:40:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48858 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235907AbiDREkS (ORCPT ); Mon, 18 Apr 2022 00:40:18 -0400 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D1F8363BE; Sun, 17 Apr 2022 21:37:40 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id bg9so16748100pgb.9; Sun, 17 Apr 2022 21:37:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=2x14r91CBQD4kQRAmO7qT3fqu0Rss/iUo6NrPr0sqPQ=; b=gm9pLszO+K7B658j6Fx2WYqjVu6vHorUWNGvEz20nbqtS+wVkezBjVfJO6ftLCLKGu /I7LedZH/HVSfgKyU9cK9WyVETN/V4Y1swvvjLDRTeNnmHmxSdkj7hGFT2h0W+yaNNp/ ePAHbv9as9Er5tUMuuRiaMYSn9xCa+vUkN20Ppp5qsF9+qCqE7214/e6JMmJguLZNZIT 82ENHtlL/skI/Cxij5H7HLTqRBEtuk7tNp+D1IQKc1MJ5N6j3YL03KSof7sxF8C7I2lh uLb8kQVg08ZsgRezUIcSyla1u/HHDzHU2NLPtIfzioyQ7fS4rcUpt0sKQ+h0l6HiTEsd T4Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=2x14r91CBQD4kQRAmO7qT3fqu0Rss/iUo6NrPr0sqPQ=; b=RBtj88Zp9PnMkY/RPpcUggumb1YPlotJT5jZjuVMUjRRLyLFyx5cGNrPB+qMoeX2PW 0uztkjUjmkflXSWdBn2DldVam2DoERUsNETuMO9SP8DejXrRBjdogznqr7cI63f5a+/Z 9nv97ypmIxF7y8VESHcyKmiYskf0k4I4D1oI/dRb4UpSSFpuESw3o0nAZEG5o774pbxl M4IKL8DkL2mHPUFgFlJ2OrCJ8bYuqOYtQ0Acz6bdzLkIlNT9OM0AEcsVKzYOCATaiGSG gccHGPNvkyvQtaV3y453+eQ3LZ0NyXuLmuP8uDXkgKWi0paY5VW2Dyi/v/J8iQx8qfgw U1jg== X-Gm-Message-State: AOAM533ILUUyRCtQmqhJbETNAj3T14twR9ZCDNIOVLf9rc7Q6T7tzdAZ I2YTGW3VqI2XFMYGG4I7K9bmfTr/A+xz2RdX X-Received: by 2002:a63:fd05:0:b0:3aa:127d:538a with SMTP id d5-20020a63fd05000000b003aa127d538amr605689pgh.95.1650256660396; Sun, 17 Apr 2022 21:37:40 -0700 (PDT) Received: from localhost ([101.86.206.159]) by smtp.gmail.com with ESMTPSA id w14-20020a17090a4f4e00b001cb510021ecsm15176253pjl.49.2022.04.17.21.37.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Apr 2022 21:37:39 -0700 (PDT) From: Patrick Wang To: paulmck@kernel.org, rostedt@goodmis.org, frederic@kernel.org, quic_neeraju@quicinc.com, josh@joshtriplett.org, mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com, joel@joelfernandes.org Cc: rcu@vger.kernel.org, linux-kernel@vger.kernel.org, patrick.wang.shcn@gmail.com Subject: [PATCH] rcu: ftrace: avoid tracing a few functions executed in multi_cpu_stop() Date: Mon, 18 Apr 2022 12:37:35 +0800 Message-Id: <20220418043735.11441-1-patrick.wang.shcn@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 A few functions are in the call chain of rcu_momentary_dyntick_idle() which is executed in multi_cpu_stop() and marked notrace. They are running in traced when ftrace modify code. This may cause non-ftrace_modify_code CPUs stall: [ 72.686113] rcu: INFO: rcu_preempt detected stalls on CPUs/tasks: [ 72.687344] rcu: 1-...!: (0 ticks this GP) idle=14f/1/0x4000000000000000 softirq=3397/3397 fqs=0 [ 72.687800] rcu: 3-...!: (0 ticks this GP) idle=ee9/1/0x4000000000000000 softirq=5168/5168 fqs=0 [ 72.688280] (detected by 0, t=8137 jiffies, g=5889, q=2 ncpus=4) [ 72.688739] Task dump for CPU 1: [ 72.688991] task:migration/1 state:R running task stack: 0 pid: 19 ppid: 2 flags:0x00000000 [ 72.689594] Stopper: multi_cpu_stop+0x0/0x18c <- stop_machine_cpuslocked+0x128/0x174 [ 72.690242] Call Trace: [ 72.690603] Task dump for CPU 3: [ 72.690761] task:migration/3 state:R running task stack: 0 pid: 29 ppid: 2 flags:0x00000000 [ 72.691135] Stopper: multi_cpu_stop+0x0/0x18c <- stop_machine_cpuslocked+0x128/0x174 [ 72.691474] Call Trace: [ 72.691733] rcu: rcu_preempt kthread timer wakeup didn't happen for 8136 jiffies! g5889 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 [ 72.692180] rcu: Possible timer handling issue on cpu=2 timer-softirq=594 [ 72.692485] rcu: rcu_preempt kthread starved for 8137 jiffies! g5889 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402 ->cpu=2 [ 72.692876] rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected behavior. [ 72.693232] rcu: RCU grace-period kthread stack dump: [ 72.693433] task:rcu_preempt state:I stack: 0 pid: 14 ppid: 2 flags:0x00000000 [ 72.693788] Call Trace: [ 72.694018] [] schedule+0x56/0xc2 [ 72.694306] [] schedule_timeout+0x82/0x184 [ 72.694539] [] rcu_gp_fqs_loop+0x19a/0x318 [ 72.694809] [] rcu_gp_kthread+0x11a/0x140 [ 72.695325] [] kthread+0xee/0x118 [ 72.695657] [] ret_from_exception+0x0/0x14 [ 72.696089] rcu: Stack dump where RCU GP kthread last ran: [ 72.696383] Task dump for CPU 2: [ 72.696562] task:migration/2 state:R running task stack: 0 pid: 24 ppid: 2 flags:0x00000000 [ 72.697059] Stopper: multi_cpu_stop+0x0/0x18c <- stop_machine_cpuslocked+0x128/0x174 [ 72.697471] Call Trace: Mark rcu_preempt_deferred_qs(), rcu_preempt_need_deferred_qs() and rcu_preempt_deferred_qs_irqrestore() notrace to avoid this. Signed-off-by: Patrick Wang --- kernel/rcu/tree_plugin.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index c3d212bc5338..07b3e656aedd 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -460,7 +460,7 @@ static bool rcu_preempt_has_tasks(struct rcu_node *rnp) * be quite short, for example, in the case of the call from * rcu_read_unlock_special(). */ -static void +notrace static void rcu_preempt_deferred_qs_irqrestore(struct task_struct *t, unsigned long flags) { bool empty_exp; @@ -581,7 +581,7 @@ rcu_preempt_deferred_qs_irqrestore(struct task_struct *t, unsigned long flags) * is disabled. This function cannot be expected to understand these * nuances, so the caller must handle them. */ -static bool rcu_preempt_need_deferred_qs(struct task_struct *t) +notrace static bool rcu_preempt_need_deferred_qs(struct task_struct *t) { return (__this_cpu_read(rcu_data.cpu_no_qs.b.exp) || READ_ONCE(t->rcu_read_unlock_special.s)) && @@ -595,7 +595,7 @@ static bool rcu_preempt_need_deferred_qs(struct task_struct *t) * evaluate safety in terms of interrupt, softirq, and preemption * disabling. */ -static void rcu_preempt_deferred_qs(struct task_struct *t) +notrace static void rcu_preempt_deferred_qs(struct task_struct *t) { unsigned long flags; -- 2.25.1