From: Beata Michalska <beata.michalska@arm.com>
To: Vanshidhar Konda <vanshikonda@os.amperecomputing.com>
Cc: "lihuisong (C)" <lihuisong@huawei.com>,
Ionela Voinescu <ionela.voinescu@arm.com>,
linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, rafael@kernel.org,
sumitg@nvidia.com, zengheng4@huawei.com,
yang@os.amperecomputing.com, will@kernel.org,
sudeep.holla@arm.com, liuyonglong@huawei.com,
zhanjie9@hisilicon.com, linux-acpi@vger.kernel.org
Subject: Re: Re: [PATCH v1 2/3] arm64: idle: Cache AMU counters before entering idle
Date: Tue, 12 Mar 2024 09:44:52 +0100 [thread overview]
Message-ID: <ZfAWBPEnjcv1xS0J@arm.com> (raw)
In-Reply-To: <ghmdr7gksgdedikslax2wdxfzzifu3drviuhifbshhvgksmxjr@7giez2rzppil>
On Mon, Mar 11, 2024 at 11:27:27AM -0700, Vanshidhar Konda wrote:
> On Thu, Mar 07, 2024 at 11:17:26AM +0800, lihuisong (C) wrote:
> >
> > 在 2024/3/1 0:25, Vanshidhar Konda 写道:
> > > AMU counters do not increment while a CPU is in idle. Saving the value
> > > of the core and constant counters prior to invoking WFI allows FIE to
> > > compute the frequency of a CPU that is idle.
> > >
> > > Signed-off-by: Vanshidhar Konda <vanshikonda@os.amperecomputing.com>
> > > ---
> > > arch/arm64/kernel/idle.c | 10 ++++++++++
> > > arch/arm64/kernel/topology.c | 14 ++++++++------
> > > 2 files changed, 18 insertions(+), 6 deletions(-)
> > >
> > > diff --git a/arch/arm64/kernel/idle.c b/arch/arm64/kernel/idle.c
> > > index 05cfb347ec26..5ed2e57188a8 100644
> > > --- a/arch/arm64/kernel/idle.c
> > > +++ b/arch/arm64/kernel/idle.c
> > > @@ -26,6 +26,16 @@ void __cpuidle cpu_do_idle(void)
> > > arm_cpuidle_save_irq_context(&context);
> > > +#ifdef CONFIG_ARM64_AMU_EXTN
> > > + /* Update the AMU counters before entering WFI. The cached AMU counter
> > > + * value is used to determine CPU frequency while the CPU is idle
> > > + * without needing to wake up the CPU.
> > > + */
> > > +
> > > + if (cpu_has_amu_feat(smp_processor_id()))
> > > + update_freq_counters_refs();
> > > +#endif
> > The below point I has mentioned in [1].
> > This is just for the WFI state.
> > What about other deeper idle states, like retention and power down?
> > The path to enter idle state is different for them. We should do this
> > for all idle states.
> >
>
> Yes. That makes sense. I'll account for them in the next version of the
> patch. I'll work on the next version of the patch based on the updated
> patch from @Beata.
>
This should now be covered by [1]
---
[1]https://lore.kernel.org/all/20240312083431.3239989-4-beata.michalska@arm.com/
---
BR
Beata
> Thanks,
> Vanshi
>
> > > +
> > > dsb(sy);
> > > wfi();
> > > diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
> > > index db8d14525cf4..8905eb0c681f 100644
> > > --- a/arch/arm64/kernel/topology.c
> > > +++ b/arch/arm64/kernel/topology.c
> > > @@ -240,13 +240,15 @@ unsigned int arch_freq_get_on_cpu(int cpu)
> > > } while (read_seqcount_retry(&cpu_sample->seq, seq));
> > > /*
> > > - * Bail on invalid count and when the last update was too long ago,
> > > - * which covers idle and NOHZ full CPUs.
> > > + * Bail on invalid count and when the last update was too long ago.
> > > + * This covers idle, NOHZ full and isolated CPUs.
> > > + *
> > > + * Idle CPUs don't need to be measured because AMU counters stop
> > > + * incrementing during WFI/WFE.
> > > */
> > > - if (!delta_const_cnt || ((jiffies - last) > MAX_SAMPLE_AGE)) {
> > > - if (!(housekeeping_cpu(cpu, HK_TYPE_TICK) && idle_cpu(cpu)))
> > > - goto fallback;
> > > - }
> > > + if (!delta_const_cnt ||
> > > + ((jiffies - last) > MAX_SAMPLE_AGE && !idle_cpu(cpu)))
> > > + goto fallback;
> > > /*
> > > * CPU frequency = reference perf (in Hz) * (/\ delivered) / (/\ reference)
> > [1] https://lore.kernel.org/linux-arm-kernel/20231212072617.14756-1-lihuisong@huawei.com/
> >
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-03-12 8:45 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-29 16:25 [PATCH v1 0/3] arm64: Use AMU counters for measuring CPU frequency Vanshidhar Konda
2024-02-29 16:25 ` [PATCH v1 1/3] arm64: topology: Add arch_freq_get_on_cpu() support Vanshidhar Konda
2024-03-06 8:24 ` Beata Michalska
2024-03-06 22:04 ` Vanshidhar Konda
2024-03-07 3:20 ` lihuisong (C)
2024-03-07 7:21 ` Beata Michalska
2024-03-07 3:02 ` lihuisong (C)
2024-02-29 16:25 ` [PATCH v1 2/3] arm64: idle: Cache AMU counters before entering idle Vanshidhar Konda
2024-03-07 3:17 ` lihuisong (C)
2024-03-11 18:27 ` Vanshidhar Konda
2024-03-12 8:44 ` Beata Michalska [this message]
2024-02-29 16:25 ` [PATCH v1 3/3] ACPI: CPPC: Read CPC FFH counters in a single IPI Vanshidhar Konda
2024-02-29 17:32 ` Rafael J. Wysocki
2024-02-29 18:00 ` Vanshidhar Konda
2024-02-29 18:02 ` Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZfAWBPEnjcv1xS0J@arm.com \
--to=beata.michalska@arm.com \
--cc=ionela.voinescu@arm.com \
--cc=lihuisong@huawei.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=liuyonglong@huawei.com \
--cc=rafael@kernel.org \
--cc=sudeep.holla@arm.com \
--cc=sumitg@nvidia.com \
--cc=vanshikonda@os.amperecomputing.com \
--cc=will@kernel.org \
--cc=yang@os.amperecomputing.com \
--cc=zengheng4@huawei.com \
--cc=zhanjie9@hisilicon.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).