Received: by 2002:a05:6359:6284:b0:131:369:b2a3 with SMTP id se4csp2796118rwb; Mon, 7 Aug 2023 03:48:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFlFDFVqrjmS1HIkw0ueo28LKew9ChSFwMt2JkTCoynrb/gPSyXH7LLvwujJDW1PWspeBPE X-Received: by 2002:a05:6a00:9a9:b0:687:1604:39eb with SMTP id u41-20020a056a0009a900b00687160439ebmr8631574pfg.25.1691405306714; Mon, 07 Aug 2023 03:48:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691405306; cv=none; d=google.com; s=arc-20160816; b=mL5YCQyNw3Wqq75eCvNeTuJjJAGH0eJws5/kuaJkYwxR/UJQe5W2u959TEhXYmCoTG nMOd9v4sZcmHJHVg6Kyn22OpPrx+7r0ko/bL9G2Nv6YQY7ToyK+RWv+3FynYlYu52Fb2 hbSQxgRNvrqYWkCzT26cOm5oM4mwpwuL6IlYAfpL/zRBJx1wfqqlatQmk7Es8lU0FvP8 +nfPs/oSKueF0jMaEYz9v2DuFMCVdKQwcLDXkKpoxGxhoUlTuQQUxdjsA7oin/JTG75T XmMQaedgwoqk/LGi/TfLVKmdS77rEeFbsypGAvhMlRmsqecCOPZ9Wya0kZKA+xahXPLy TnEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=fKqxdhVEJs55QDKQhgIwghmnBdVVmRsYXm5A/kn0ltw=; fh=s1inBLbC5LAywDI9g+y6UNTYc1E5UjSiWpORHbTb33g=; b=aQwoTmpzdYE5M9TyvXfTuzJGV44MteKIzY1inmENITPkigKgVwMEfVSMdWME61VBjo EJuXnDR00mWdLgcWUk+mRGPrFM3YZD+iDOZEWrlSawduwfu5e/3OnnCfmuZSh3FYPDRa 1uRBys6loUm5VLZuBaiT295erwhqBwpaJ9yJdLx0TMczXsja1pynvaIy8pQ8uUnTU8tE CA9zduYFBOTsmZRnzJlHWAliEaODARN5SRIdVE9gjNa7gtyBgWKJ7bCyaHLupcKPV4e0 n8sD8JQ++2GCDvuNqFHmr0tcvcAXn713AZ9Sj12gRBiIqdRFXxM8HiVg3So5gJdE4Os4 PUew== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id be9-20020a056a001f0900b006866be8eed2si5475304pfb.137.2023.08.07.03.48.14; Mon, 07 Aug 2023 03:48:26 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229824AbjHGJxE (ORCPT + 99 others); Mon, 7 Aug 2023 05:53:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229480AbjHGJxC (ORCPT ); Mon, 7 Aug 2023 05:53:02 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id D08E119AA; Mon, 7 Aug 2023 02:52:34 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 015E01FB; Mon, 7 Aug 2023 02:52:58 -0700 (PDT) Received: from FVFF77S0Q05N.cambridge.arm.com (FVFF77S0Q05N.cambridge.arm.com [10.1.32.139]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 013183F59C; Mon, 7 Aug 2023 02:52:11 -0700 (PDT) Date: Mon, 7 Aug 2023 10:52:09 +0100 From: Mark Rutland To: Douglas Anderson Cc: Catalin Marinas , Will Deacon , Sumit Garg , Daniel Thompson , Marc Zyngier , linux-perf-users@vger.kernel.org, ito-yuichi@fujitsu.com, Chen-Yu Tsai , Ard Biesheuvel , Stephen Boyd , Peter Zijlstra , Thomas Gleixner , linux-arm-kernel@lists.infradead.org, kgdb-bugreport@lists.sourceforge.net, Masayoshi Mizuma , "Rafael J . Wysocki" , Lecopzer Chen , Frederic Weisbecker , "Gautham R. Shenoy" , Ingo Molnar , linux-kernel@vger.kernel.org Subject: Re: [PATCH v9 2/7] arm64: idle: Tag the arm64 idle functions as __cpuidle Message-ID: References: <20230601213440.2488667-1-dianders@chromium.org> <20230601143109.v9.2.I4baba13e220bdd24d11400c67f137c35f07f82c7@changeid> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230601143109.v9.2.I4baba13e220bdd24d11400c67f137c35f07f82c7@changeid> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE 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 On Thu, Jun 01, 2023 at 02:31:46PM -0700, Douglas Anderson wrote: > As per the (somewhat recent) comment before the definition of > `__cpuidle`, the tag is like `noinstr` but also marks a function so it > can be identified by cpu_in_idle(). Let'a add this. > > After doing this then when we dump stack traces of all processors > using nmi_cpu_backtrace() then instead of getting useless backtraces > we get things like: > > NMI backtrace for cpu N skipped: idling at cpu_do_idle+0x94/0x98 > > NOTE: this patch won't make cpu_in_idle() work perfectly for arm64, > but it doesn't hurt and does catch some cases. Specifically an example > that wasn't caught in my testing looked like this: > > gic_cpu_sys_reg_init+0x1f8/0x314 > gic_cpu_pm_notifier+0x40/0x78 > raw_notifier_call_chain+0x5c/0x134 > cpu_pm_notify+0x38/0x64 > cpu_pm_exit+0x20/0x2c > psci_enter_idle_state+0x48/0x70 > cpuidle_enter_state+0xb8/0x260 > cpuidle_enter+0x44/0x5c > do_idle+0x188/0x30c > > Signed-off-by: Douglas Anderson I don't have strong feelings either way for this, so: Acked-by: Mark Rutland Thanks, Mark. > --- > > Changes in v9: > - Added to commit message that this doesn't catch all cases. > > Changes in v8: > - "Tag the arm64 idle functions as __cpuidle" new for v8 > > arch/arm64/kernel/idle.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/kernel/idle.c b/arch/arm64/kernel/idle.c > index c1125753fe9b..05cfb347ec26 100644 > --- a/arch/arm64/kernel/idle.c > +++ b/arch/arm64/kernel/idle.c > @@ -20,7 +20,7 @@ > * ensure that interrupts are not masked at the PMR (because the core will > * not wake up if we block the wake up signal in the interrupt controller). > */ > -void noinstr cpu_do_idle(void) > +void __cpuidle cpu_do_idle(void) > { > struct arm_cpuidle_irq_context context; > > @@ -35,7 +35,7 @@ void noinstr cpu_do_idle(void) > /* > * This is our default idle handler. > */ > -void noinstr arch_cpu_idle(void) > +void __cpuidle arch_cpu_idle(void) > { > /* > * This should do all the clock switching and wait for interrupt > -- > 2.41.0.rc2.161.g9c6817b8e7-goog >