Received: by 2002:a05:7412:3784:b0:e2:908c:2ebd with SMTP id jk4csp1842981rdb; Tue, 3 Oct 2023 02:46:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHMIGOFrdPhoC6Hu3ZW6x85JPgZLKa8/wzqd3AuOa+IXJtRBrdb1WkGH8dxt0JLW9Jv3se+ X-Received: by 2002:a05:6a00:1a8c:b0:68a:49bc:e0af with SMTP id e12-20020a056a001a8c00b0068a49bce0afmr15959922pfv.1.1696326395838; Tue, 03 Oct 2023 02:46:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696326395; cv=none; d=google.com; s=arc-20160816; b=dWgJCuSnlP12RXnl69g6soE7BVnoFsyXJ9VfC6pv1bvFNWCdgGK5o5C2n2qVnIt6l5 onyq+dRI2ZsBYvgL1rMLvt83fjPwVXiydXwkZF+FmyxQ4EH3M8SIlk+fP722RF3NBhWA uljBw43ow61dG5Zs/WWPwISb/k2M/dT17e3VHLLqFcU/5LbC7EUfvCoOE140ASq81NP4 ap/OhC0/SBaGQwrTm6giAq2p/IcnmKRCxZ4eF8hbjZo7B64xaxzW83v6/1Cq5sho/shg BAoNYx9ZgZWiJGb9R0aYiORm8/RDf/kGsDfqiaAhqSvoLl/jM9ZnLF7dQrdqH1Z7oR2Q 88Rg== 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=5AY+gP3TS6OaY2Db4ayzPKoW74dQs1D+Jfwtyu1CwKA=; fh=RtMqTIIHglCH8d3HXqMAzuOwkIQpJrireL7D0SwttBc=; b=Roh9bLRFT9ZtydMd6iAtwfgtpeAZuoSItT2WGcJVgG9SDgWEdwILJIo9qdTETnoh6+ zpfpWD4PpxKWmP0nXwOBCvSFFvtDHsbZmlQYVgg/Lstn/0kFeY1/hTbHn7mXqav/ADk/ FTad2v6Ytu4PnwAnwigadM/QlIlLkCLzRZIl0Gowlev0/+7BD8W1a8JWz1baK1bQRMXC wpCPhDTNViMbz7T9ILqMsY88LOPHuwuAy2sfkMK5kiAZzaWzH1FsE81iot6M/4WxAtR6 FqgjlFR0L6zGvnXD7wcD9/+QxiHzjkzbmN3xe+EjUawkny0h80fUUiDCFLE+MnactHtb xIPQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 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 groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id c5-20020a6566c5000000b0056ad01ddc36si1097565pgw.509.2023.10.03.02.46.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Oct 2023 02:46:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 18846809F39A; Tue, 3 Oct 2023 02:46:04 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239790AbjJCJpw (ORCPT + 99 others); Tue, 3 Oct 2023 05:45:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231931AbjJCJpu (ORCPT ); Tue, 3 Oct 2023 05:45:50 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 0DD9BB0; Tue, 3 Oct 2023 02:45:47 -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 2B7AFC15; Tue, 3 Oct 2023 02:46:25 -0700 (PDT) Received: from bogus (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7FB2D3F5A1; Tue, 3 Oct 2023 02:45:45 -0700 (PDT) Date: Tue, 3 Oct 2023 10:45:43 +0100 From: Sudeep Holla To: "Pawandeep Oza (QUIC)" Cc: 'Will Deacon' , Sudeep Holla , "catalin.marinas@arm.com" , "rafael@kernel.org" , "lenb@kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-acpi@vger.kernel.org" Subject: Re: [PATCH v8] cpuidle, ACPI: Evaluate LPI arch_flags for broadcast timer Message-ID: <20231003094543.oinq2onehefxdrbw@bogus> References: <20230918172140.2825357-1-quic_poza@quicinc.com> <20230929150459.GA30623@willie-the-truck> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, 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 groat.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 (groat.vger.email [0.0.0.0]); Tue, 03 Oct 2023 02:46:04 -0700 (PDT) On Mon, Oct 02, 2023 at 07:22:57PM +0000, Pawandeep Oza (QUIC) wrote: > > > -----Original Message----- > From: Will Deacon > Sent: Friday, September 29, 2023 8:05 AM > To: Pawandeep Oza (QUIC) > Cc: sudeep.holla@arm.com; catalin.marinas@arm.com; rafael@kernel.org; lenb@kernel.org; linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; linux-acpi@vger.kernel.org > Subject: Re: [PATCH v8] cpuidle, ACPI: Evaluate LPI arch_flags for broadcast timer > > On Mon, Sep 18, 2023 at 10:21:40AM -0700, Oza Pawandeep wrote: > > Arm(r) Functional Fixed Hardware Specification defines LPI states, which > > provide an architectural context loss flags field that can be used to > > describe the context that might be lost when an LPI state is entered. > > > > - Core context Lost > > - General purpose registers. > > - Floating point and SIMD registers. > > - System registers, include the System register based > > - generic timer for the core. > > - Debug register in the core power domain. > > - PMU registers in the core power domain. > > - Trace register in the core power domain. > > - Trace context loss > > - GICR > > - GICD > > > > Qualcomm's custom CPUs preserves the architectural state, including > > keeping the power domain for local timers active. > > when core is power gated, the local timers are sufficient to wake the > > core up without needing broadcast timer. > > > > The patch fixes the evaluation of cpuidle arch_flags, and moves only > > to broadcast timer if core context lost is defined in ACPI LPI. > > > > Fixes: a36a7fecfe607 ("Add support for Low Power Idle(LPI) states") > > Reviewed-by: Sudeep Holla > > Acked-by: Rafael J. Wysocki > > Signed-off-by: Oza Pawandeep > > --- > > diff --git a/drivers/acpi/processor_idle.c > > b/drivers/acpi/processor_idle.c index dc615ef6550a..5c1d13eecdd1 > > 100644 > > --- a/drivers/acpi/processor_idle.c > > +++ b/drivers/acpi/processor_idle.c > > @@ -1217,8 +1217,7 @@ static int acpi_processor_setup_lpi_states(struct acpi_processor *pr) > > strscpy(state->desc, lpi->desc, CPUIDLE_DESC_LEN); > > state->exit_latency = lpi->wake_latency; > > state->target_residency = lpi->min_residency; > > - if (lpi->arch_flags) > > - state->flags |= CPUIDLE_FLAG_TIMER_STOP; > > + arch_update_idle_state_flags(lpi->arch_flags, &state->flags); > > Hmm, I know Rafael has Acked this, but I think this is pretending to be more > generic than it really is. While passing in a pointer to the flags field > allows the arch code to set and clear arbitrary flags, we're calling this > before we've set CPUIDLE_FLAG_RCU_IDLE, so that cannot be changed. > > Why not just name it like it is and return the arch flags directly: > > state->flags |= arch_get_idle_state_flags(lpi->arch_flags); > > Oza: > > ? Not sure if this "?" is by mistake or you didn't follow Will's comment. The point made was that it is cleaner for arch code to just provide the flags that needs to be set via some helper like 'arch_get_idle_state_flags()' rather than set/update itself via 'arch_update_idle_state_flags()' like you have in this patch. I completely agree with Will as this is much cleaner and arch code just returns the requested flags and the core code is still in charge to update the flags. -- Regards, Sudeep