From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Marc Gonzalez <marc.w.gonzalez@free.fr>
Cc: Niklas Cassel <niklas.cassel@linaro.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
Amit Kucheria <amit.kucheria@linaro.org>,
Rafael Wysocki <rjw@rjwysocki.net>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
MSM <linux-arm-msm@vger.kernel.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
PM <linux-pm@vger.kernel.org>, Sibi Sankar <sibis@codeaurora.org>,
Jeffrey Hugo <jhugo@codeaurora.org>,
Andy Gross <agross@kernel.org>,
Sudeep Holla <sudeep.holla@arm.com>
Subject: Re: [PATCH v4] arm64: dts: qcom: msm8998: Add PSCI cpuidle low power states
Date: Wed, 29 May 2019 18:25:41 +0100 [thread overview]
Message-ID: <20190529172541.GB25642@redmoon> (raw)
In-Reply-To: <c41508c7-35b2-aa40-c468-384e51d3d7b6@free.fr>
On Wed, May 29, 2019 at 01:08:44PM +0200, Marc Gonzalez wrote:
> + linux-pm
>
> On 24/05/2019 14:32, Marc Gonzalez wrote:
>
> > From: Amit Kucheria <amit.kucheria@linaro.org>
> >
> > Add device bindings for cpuidle states for cpu devices.
> >
> > [marc: rebase, fix arm,psci-suspend-param, fix entry-latency-us]
> > Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> > Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> > Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>
> > ---
> > Changes from v3:
> > - Fixup all 4 entry-latency-us (Niklas)
> > Changes from v2:
> > - Rebase
> > - Fixup arm,psci-suspend-param for power-collapse states (otherwise: reboot)
> > ---
> > arch/arm64/boot/dts/qcom/msm8998.dtsi | 50 +++++++++++++++++++++++++++
> > 1 file changed, 50 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/msm8998.dtsi b/arch/arm64/boot/dts/qcom/msm8998.dtsi
> > index 412195b9794c..ac6bd32c0e7d 100644
> > --- a/arch/arm64/boot/dts/qcom/msm8998.dtsi
> > +++ b/arch/arm64/boot/dts/qcom/msm8998.dtsi
> > @@ -78,6 +78,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x0>;
> > enable-method = "psci";
> > + cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
> > next-level-cache = <&L2_0>;
> > L2_0: l2-cache {
> > compatible = "arm,arch-cache";
> > @@ -96,6 +97,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x1>;
> > enable-method = "psci";
> > + cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
> > next-level-cache = <&L2_0>;
> > L1_I_1: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -110,6 +112,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x2>;
> > enable-method = "psci";
> > + cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
> > next-level-cache = <&L2_0>;
> > L1_I_2: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -124,6 +127,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x3>;
> > enable-method = "psci";
> > + cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
> > next-level-cache = <&L2_0>;
> > L1_I_3: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -138,6 +142,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x100>;
> > enable-method = "psci";
> > + cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
> > next-level-cache = <&L2_1>;
> > L2_1: l2-cache {
> > compatible = "arm,arch-cache";
> > @@ -156,6 +161,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x101>;
> > enable-method = "psci";
> > + cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
> > next-level-cache = <&L2_1>;
> > L1_I_101: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -170,6 +176,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x102>;
> > enable-method = "psci";
> > + cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
> > next-level-cache = <&L2_1>;
> > L1_I_102: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -184,6 +191,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x103>;
> > enable-method = "psci";
> > + cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
> > next-level-cache = <&L2_1>;
> > L1_I_103: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -230,6 +238,48 @@
> > };
> > };
> > };
> > +
> > + idle-states {
> > + entry-method = "psci";
> > +
> > + LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 {
> > + compatible = "arm,idle-state";
> > + idle-state-name = "little-retention";
> > + arm,psci-suspend-param = <0x00000002>;
> > + entry-latency-us = <81>;
> > + exit-latency-us = <86>;
> > + min-residency-us = <200>;
> > + };
> > +
> > + LITTLE_CPU_SLEEP_1: cpu-sleep-0-1 {
> > + compatible = "arm,idle-state";
> > + idle-state-name = "little-power-collapse";
> > + arm,psci-suspend-param = <0x40000003>;
> > + entry-latency-us = <273>;
> > + exit-latency-us = <612>;
> > + min-residency-us = <1000>;
> > + local-timer-stop;
> > + };
> > +
> > + BIG_CPU_SLEEP_0: cpu-sleep-1-0 {
> > + compatible = "arm,idle-state";
> > + idle-state-name = "big-retention";
> > + arm,psci-suspend-param = <0x00000002>;
> > + entry-latency-us = <79>;
> > + exit-latency-us = <82>;
> > + min-residency-us = <200>;
> > + };
> > +
> > + BIG_CPU_SLEEP_1: cpu-sleep-1-1 {
> > + compatible = "arm,idle-state";
> > + idle-state-name = "big-power-collapse";
> > + arm,psci-suspend-param = <0x40000003>;
> > + entry-latency-us = <336>;
> > + exit-latency-us = <525>;
> > + min-residency-us = <1000>;
> > + local-timer-stop;
> > + };
> > + };
>
> Niklas and I have been discussing the min-residency-us prop.
>
> https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/arm/idle-states.txt
>
> I thought a requirement would be
>
> min-residency > entry-latency + exit-latency
>
> but it doesn't seem to be the case.
>
> Do the values proposed here look kosher?
As the document describes the right values should be computed by
plotting energy consumption.
min-residency is a worst case scenario because the energy consumed to
enter an idle state depends on the system state (eg cache state), so the
worst case value should be added there.
Lorenzo
WARNING: multiple messages have this Message-ID (diff)
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Marc Gonzalez <marc.w.gonzalez@free.fr>
Cc: PM <linux-pm@vger.kernel.org>,
Jeffrey Hugo <jhugo@codeaurora.org>,
MSM <linux-arm-msm@vger.kernel.org>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Rafael Wysocki <rjw@rjwysocki.net>,
Amit Kucheria <amit.kucheria@linaro.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
Andy Gross <agross@kernel.org>,
Sibi Sankar <sibis@codeaurora.org>,
Sudeep Holla <sudeep.holla@arm.com>,
Niklas Cassel <niklas.cassel@linaro.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v4] arm64: dts: qcom: msm8998: Add PSCI cpuidle low power states
Date: Wed, 29 May 2019 18:25:41 +0100 [thread overview]
Message-ID: <20190529172541.GB25642@redmoon> (raw)
In-Reply-To: <c41508c7-35b2-aa40-c468-384e51d3d7b6@free.fr>
On Wed, May 29, 2019 at 01:08:44PM +0200, Marc Gonzalez wrote:
> + linux-pm
>
> On 24/05/2019 14:32, Marc Gonzalez wrote:
>
> > From: Amit Kucheria <amit.kucheria@linaro.org>
> >
> > Add device bindings for cpuidle states for cpu devices.
> >
> > [marc: rebase, fix arm,psci-suspend-param, fix entry-latency-us]
> > Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> > Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> > Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>
> > ---
> > Changes from v3:
> > - Fixup all 4 entry-latency-us (Niklas)
> > Changes from v2:
> > - Rebase
> > - Fixup arm,psci-suspend-param for power-collapse states (otherwise: reboot)
> > ---
> > arch/arm64/boot/dts/qcom/msm8998.dtsi | 50 +++++++++++++++++++++++++++
> > 1 file changed, 50 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/msm8998.dtsi b/arch/arm64/boot/dts/qcom/msm8998.dtsi
> > index 412195b9794c..ac6bd32c0e7d 100644
> > --- a/arch/arm64/boot/dts/qcom/msm8998.dtsi
> > +++ b/arch/arm64/boot/dts/qcom/msm8998.dtsi
> > @@ -78,6 +78,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x0>;
> > enable-method = "psci";
> > + cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
> > next-level-cache = <&L2_0>;
> > L2_0: l2-cache {
> > compatible = "arm,arch-cache";
> > @@ -96,6 +97,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x1>;
> > enable-method = "psci";
> > + cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
> > next-level-cache = <&L2_0>;
> > L1_I_1: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -110,6 +112,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x2>;
> > enable-method = "psci";
> > + cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
> > next-level-cache = <&L2_0>;
> > L1_I_2: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -124,6 +127,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x3>;
> > enable-method = "psci";
> > + cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
> > next-level-cache = <&L2_0>;
> > L1_I_3: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -138,6 +142,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x100>;
> > enable-method = "psci";
> > + cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
> > next-level-cache = <&L2_1>;
> > L2_1: l2-cache {
> > compatible = "arm,arch-cache";
> > @@ -156,6 +161,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x101>;
> > enable-method = "psci";
> > + cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
> > next-level-cache = <&L2_1>;
> > L1_I_101: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -170,6 +176,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x102>;
> > enable-method = "psci";
> > + cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
> > next-level-cache = <&L2_1>;
> > L1_I_102: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -184,6 +191,7 @@
> > compatible = "arm,armv8";
> > reg = <0x0 0x103>;
> > enable-method = "psci";
> > + cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
> > next-level-cache = <&L2_1>;
> > L1_I_103: l1-icache {
> > compatible = "arm,arch-cache";
> > @@ -230,6 +238,48 @@
> > };
> > };
> > };
> > +
> > + idle-states {
> > + entry-method = "psci";
> > +
> > + LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 {
> > + compatible = "arm,idle-state";
> > + idle-state-name = "little-retention";
> > + arm,psci-suspend-param = <0x00000002>;
> > + entry-latency-us = <81>;
> > + exit-latency-us = <86>;
> > + min-residency-us = <200>;
> > + };
> > +
> > + LITTLE_CPU_SLEEP_1: cpu-sleep-0-1 {
> > + compatible = "arm,idle-state";
> > + idle-state-name = "little-power-collapse";
> > + arm,psci-suspend-param = <0x40000003>;
> > + entry-latency-us = <273>;
> > + exit-latency-us = <612>;
> > + min-residency-us = <1000>;
> > + local-timer-stop;
> > + };
> > +
> > + BIG_CPU_SLEEP_0: cpu-sleep-1-0 {
> > + compatible = "arm,idle-state";
> > + idle-state-name = "big-retention";
> > + arm,psci-suspend-param = <0x00000002>;
> > + entry-latency-us = <79>;
> > + exit-latency-us = <82>;
> > + min-residency-us = <200>;
> > + };
> > +
> > + BIG_CPU_SLEEP_1: cpu-sleep-1-1 {
> > + compatible = "arm,idle-state";
> > + idle-state-name = "big-power-collapse";
> > + arm,psci-suspend-param = <0x40000003>;
> > + entry-latency-us = <336>;
> > + exit-latency-us = <525>;
> > + min-residency-us = <1000>;
> > + local-timer-stop;
> > + };
> > + };
>
> Niklas and I have been discussing the min-residency-us prop.
>
> https://elixir.bootlin.com/linux/latest/source/Documentation/devicetree/bindings/arm/idle-states.txt
>
> I thought a requirement would be
>
> min-residency > entry-latency + exit-latency
>
> but it doesn't seem to be the case.
>
> Do the values proposed here look kosher?
As the document describes the right values should be computed by
plotting energy consumption.
min-residency is a worst case scenario because the energy consumed to
enter an idle state depends on the system state (eg cache state), so the
worst case value should be added there.
Lorenzo
_______________________________________________
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:[~2019-05-29 17:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-23 8:36 [PATCH v3] arm64: dts: qcom: msm8998: Add PSCI cpuidle low power states Marc Gonzalez
2019-05-23 8:36 ` Marc Gonzalez
2019-05-23 21:46 ` Niklas Cassel
2019-05-23 21:46 ` Niklas Cassel
2019-05-24 11:33 ` Marc Gonzalez
2019-05-24 11:33 ` Marc Gonzalez
2019-05-24 12:32 ` [PATCH v4] " Marc Gonzalez
2019-05-24 12:32 ` Marc Gonzalez
2019-05-29 11:08 ` Marc Gonzalez
2019-05-29 11:08 ` Marc Gonzalez
2019-05-29 17:25 ` Lorenzo Pieralisi [this message]
2019-05-29 17:25 ` Lorenzo Pieralisi
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=20190529172541.GB25642@redmoon \
--to=lorenzo.pieralisi@arm.com \
--cc=agross@kernel.org \
--cc=amit.kucheria@linaro.org \
--cc=bjorn.andersson@linaro.org \
--cc=daniel.lezcano@linaro.org \
--cc=jhugo@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=marc.w.gonzalez@free.fr \
--cc=niklas.cassel@linaro.org \
--cc=rjw@rjwysocki.net \
--cc=sibis@codeaurora.org \
--cc=sudeep.holla@arm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.