From: Geert Uytterhoeven <geert@linux-m68k.org> To: Sudeep Holla <sudeep.holla@arm.com> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>, Geert Uytterhoeven <geert+renesas@glider.be>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Mark Rutland <mark.rutland@arm.com>, Lina Iyer <lina.iyer@linaro.org>, John Stultz <john.stultz@linaro.org>, Thomas Gleixner <tglx@linutronix.de>, Len Brown <len.brown@intel.com>, Pavel Machek <pavel@ucw.cz>, Rob Herring <robh+dt@kernel.org>, Magnus Damm <magnus.damm@gmail.com>, "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org>, Linux-Renesas <linux-renesas-soc@vger.kernel.org>, Linux PM list <linux-pm@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH/RFC 0/6] PSCI: Fix non-PMIC wake-up if SYSTEM_SUSPEND cuts power Date: Thu, 23 Feb 2017 16:26:33 +0100 [thread overview] Message-ID: <CAMuHMdVTEbqEocYwu=KW_uXpykYkVwUgSJBnLvQp_Epn8Pjp1g@mail.gmail.com> (raw) In-Reply-To: <f649d707-8b0a-5ca9-b021-93ae8cf66b33@arm.com> Hi Sudeep, On Wed, Feb 22, 2017 at 3:32 PM, Sudeep Holla <sudeep.holla@arm.com> wrote: > On 22/02/17 13:38, Geert Uytterhoeven wrote: >> On Wed, Feb 22, 2017 at 12:03 PM, Sudeep Holla <sudeep.holla@arm.com> wrote: >>> On 22/02/17 01:14, Rafael J. Wysocki wrote: >>>> On Tuesday, February 21, 2017 06:45:13 PM Sudeep Holla wrote: >>> Geert, so far you have failed to explain what's different from the new >>> state you are adding and the existing s2idle. >> >> I did explain, cfr.: >> 1. The power consumption figures in the cover letter: >> - shallow: 8.4 W 6.2 W (secondary CPU cores off) > > That's because your CPU_SUSPEND implementation is incomplete. You can > enter the same state as secondary CPU core off even with idle. It's just > that we can save by not entering and exiting the CPU hotplug state > machine. So this "shallow" state can be achieved if your CPU_SUSPEND > implements that state. Does that include power areas? >> 2. The description for patch 3/6: >> As secondary CPU cores are taken offline, "shallow" suspend mode saves >> slightly more power than "s2idle", but less than "deep" suspend mode. >> However, unlike "deep" suspend mode, "shallow" suspend mode can be used >> regardless of the presence of support for PSCI_SYSTEM_SUSPEND, which is >> an optional API in PSCI v1.0. > > Yes I understood that, you need to add an extra idle states to get that > shallow state. We have discussed this in past to depth. On ARM64/PSCI, > we will that support "shallow" system suspend mode which can't be > defined generically. Also we can support this shallow state with s2idle. > > Your system probably not supporting all the CPU idle states. E.g.: it > may just support CPU ON/OFF/RET and not cluster ON/OFF/RET. Please add > that state to CPU_SUSPEND implementation in the firmware. I can find CPU_ON and CPU_OFF in the PSCI specification, but not CPU_RET? How is the cluster ON/OFF/RET called exactly? I can't find any CLUSTER_* calls in the PSCI specification. >From a quick glance in the PSCI sources, there's some support for powering down clusters. >> Perhaps, I didn't make myself clear. Let's summarize: >> 1. On Renesas R-Car Gen3 platforms, PSCI SYSTEM_SUSPEND is implemented, > > OK got that. > >> 2. On these platforms, PSCI SYSTEM_SUSPEND powers down the SoC, and supports >> wake-up from PMIC only, > > OK > >> 3. If the user wants to use a different wake-up source, these other >> wake-up sources fail to wake up the system from PSCI SYSTEM_SUSPEND. > > In that case don't enter PSCI SYSTEM_SUSPEND Or prevent the system from doing that... >> 4. Patch 3/6 adds a new "shallow" state, as it allows to save more >> power (the difference may be due to suboptimal cpuidle platform support on R-Car Gen3, though), > > Why can't you do that in s2idle mode. Please give me the difference > between your shallow state and s2idle state, not just power numbers > but the actual state of CPUs and the devices in the system. >From the Linux side, there's not much difference, except that the secondary CPU cores are disabled. As that is handled by PSCI, the difference may be in the PSCI implementation. I will have to check that... On these SoCs, the individual CPU cores and the SCU/L2 are in separate (nested) power areas. Perhaps these power areas are turned off when disabling the CPU cores, but not when suspending them. >> E.g. on non-PSCI platforms with an Ethernet driver that supports >> Wake-on-LAN, I can do: >> >> ethtool -s eth0 wol g >> echo mem > /sys/power/state >> >> and be sure that the system can be woken up by sending a WoL MagicPacket. > > Still possible with s2idle if CPU_SUSPEND is correctly implemented by > the platform. Sure. But not automatic, as it needs fiddling with mem_sleep. >> On PSCI systems, the above may work, or may not work. And there's no way to >> find out (in an automated way) whether it will work or not. >> >> If it doesn't work, the user has to configure his system (manually) to >> not use "mem" state. >> Since v4.10-rc1, that can be done using e.g. >> >> echo s2idle > /sys/power/mem_sleep >> >> and my patches make that automatic (for a new "shallow" state instead >> of "s2idle", though). > > How is that ? If "deep" is available as in your case too, why will > shallow become default. IIUC the user still have to write "shallow" > to mem_sleep. After patch 4, if needed (DT property + extra wake-up sources configured), psci_system_suspend_enter() will call cpu_do_idle() instead of psci_system_suspend(). No need to fiddle with mem_sleep manually. > Does this platform use generic arm64 DT cpuidle driver ? I don't see so > from the DT. I think that task isn't complete yet. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
WARNING: multiple messages have this Message-ID (diff)
From: geert@linux-m68k.org (Geert Uytterhoeven) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH/RFC 0/6] PSCI: Fix non-PMIC wake-up if SYSTEM_SUSPEND cuts power Date: Thu, 23 Feb 2017 16:26:33 +0100 [thread overview] Message-ID: <CAMuHMdVTEbqEocYwu=KW_uXpykYkVwUgSJBnLvQp_Epn8Pjp1g@mail.gmail.com> (raw) In-Reply-To: <f649d707-8b0a-5ca9-b021-93ae8cf66b33@arm.com> Hi Sudeep, On Wed, Feb 22, 2017 at 3:32 PM, Sudeep Holla <sudeep.holla@arm.com> wrote: > On 22/02/17 13:38, Geert Uytterhoeven wrote: >> On Wed, Feb 22, 2017 at 12:03 PM, Sudeep Holla <sudeep.holla@arm.com> wrote: >>> On 22/02/17 01:14, Rafael J. Wysocki wrote: >>>> On Tuesday, February 21, 2017 06:45:13 PM Sudeep Holla wrote: >>> Geert, so far you have failed to explain what's different from the new >>> state you are adding and the existing s2idle. >> >> I did explain, cfr.: >> 1. The power consumption figures in the cover letter: >> - shallow: 8.4 W 6.2 W (secondary CPU cores off) > > That's because your CPU_SUSPEND implementation is incomplete. You can > enter the same state as secondary CPU core off even with idle. It's just > that we can save by not entering and exiting the CPU hotplug state > machine. So this "shallow" state can be achieved if your CPU_SUSPEND > implements that state. Does that include power areas? >> 2. The description for patch 3/6: >> As secondary CPU cores are taken offline, "shallow" suspend mode saves >> slightly more power than "s2idle", but less than "deep" suspend mode. >> However, unlike "deep" suspend mode, "shallow" suspend mode can be used >> regardless of the presence of support for PSCI_SYSTEM_SUSPEND, which is >> an optional API in PSCI v1.0. > > Yes I understood that, you need to add an extra idle states to get that > shallow state. We have discussed this in past to depth. On ARM64/PSCI, > we will that support "shallow" system suspend mode which can't be > defined generically. Also we can support this shallow state with s2idle. > > Your system probably not supporting all the CPU idle states. E.g.: it > may just support CPU ON/OFF/RET and not cluster ON/OFF/RET. Please add > that state to CPU_SUSPEND implementation in the firmware. I can find CPU_ON and CPU_OFF in the PSCI specification, but not CPU_RET? How is the cluster ON/OFF/RET called exactly? I can't find any CLUSTER_* calls in the PSCI specification. >From a quick glance in the PSCI sources, there's some support for powering down clusters. >> Perhaps, I didn't make myself clear. Let's summarize: >> 1. On Renesas R-Car Gen3 platforms, PSCI SYSTEM_SUSPEND is implemented, > > OK got that. > >> 2. On these platforms, PSCI SYSTEM_SUSPEND powers down the SoC, and supports >> wake-up from PMIC only, > > OK > >> 3. If the user wants to use a different wake-up source, these other >> wake-up sources fail to wake up the system from PSCI SYSTEM_SUSPEND. > > In that case don't enter PSCI SYSTEM_SUSPEND Or prevent the system from doing that... >> 4. Patch 3/6 adds a new "shallow" state, as it allows to save more >> power (the difference may be due to suboptimal cpuidle platform support on R-Car Gen3, though), > > Why can't you do that in s2idle mode. Please give me the difference > between your shallow state and s2idle state, not just power numbers > but the actual state of CPUs and the devices in the system. >From the Linux side, there's not much difference, except that the secondary CPU cores are disabled. As that is handled by PSCI, the difference may be in the PSCI implementation. I will have to check that... On these SoCs, the individual CPU cores and the SCU/L2 are in separate (nested) power areas. Perhaps these power areas are turned off when disabling the CPU cores, but not when suspending them. >> E.g. on non-PSCI platforms with an Ethernet driver that supports >> Wake-on-LAN, I can do: >> >> ethtool -s eth0 wol g >> echo mem > /sys/power/state >> >> and be sure that the system can be woken up by sending a WoL MagicPacket. > > Still possible with s2idle if CPU_SUSPEND is correctly implemented by > the platform. Sure. But not automatic, as it needs fiddling with mem_sleep. >> On PSCI systems, the above may work, or may not work. And there's no way to >> find out (in an automated way) whether it will work or not. >> >> If it doesn't work, the user has to configure his system (manually) to >> not use "mem" state. >> Since v4.10-rc1, that can be done using e.g. >> >> echo s2idle > /sys/power/mem_sleep >> >> and my patches make that automatic (for a new "shallow" state instead >> of "s2idle", though). > > How is that ? If "deep" is available as in your case too, why will > shallow become default. IIUC the user still have to write "shallow" > to mem_sleep. After patch 4, if needed (DT property + extra wake-up sources configured), psci_system_suspend_enter() will call cpu_do_idle() instead of psci_system_suspend(). No need to fiddle with mem_sleep manually. > Does this platform use generic arm64 DT cpuidle driver ? I don't see so > from the DT. I think that task isn't complete yet. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
next prev parent reply other threads:[~2017-02-23 15:27 UTC|newest] Thread overview: 145+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-02-20 20:33 [PATCH/RFC 0/6] PSCI: Fix non-PMIC wake-up if SYSTEM_SUSPEND cuts power Geert Uytterhoeven 2017-02-20 20:33 ` Geert Uytterhoeven 2017-02-20 20:33 ` [PATCH/RFC 1/6] alarmtimer: Postpone wake-up source registration until really available Geert Uytterhoeven 2017-02-20 20:33 ` Geert Uytterhoeven 2017-02-20 20:33 ` [PATCH/RFC 2/6] PM / Wakeup: Add wakeup_source_available() Geert Uytterhoeven 2017-02-20 20:33 ` Geert Uytterhoeven 2017-02-20 20:33 ` [PATCH/RFC 3/6] drivers: firmware: psci: Implement shallow suspend mode Geert Uytterhoeven 2017-02-20 20:33 ` Geert Uytterhoeven 2017-02-21 10:42 ` Sudeep Holla 2017-02-21 10:42 ` Sudeep Holla 2017-02-21 16:23 ` Geert Uytterhoeven 2017-02-21 16:23 ` Geert Uytterhoeven 2017-02-21 16:23 ` Geert Uytterhoeven 2017-02-21 16:51 ` Sudeep Holla 2017-02-21 16:51 ` Sudeep Holla 2017-02-21 16:51 ` Sudeep Holla 2017-02-21 11:07 ` Pavel Machek 2017-02-21 11:07 ` Pavel Machek 2017-02-21 11:07 ` Pavel Machek 2017-02-21 11:14 ` Sudeep Holla 2017-02-21 11:14 ` Sudeep Holla 2017-02-21 11:14 ` Sudeep Holla 2017-02-21 16:32 ` Geert Uytterhoeven 2017-02-21 16:32 ` Geert Uytterhoeven 2017-02-21 16:32 ` Geert Uytterhoeven 2017-02-21 17:20 ` Mark Rutland 2017-02-21 17:20 ` Mark Rutland 2017-02-21 17:20 ` Mark Rutland 2017-02-21 17:20 ` Mark Rutland 2017-02-21 18:06 ` Geert Uytterhoeven 2017-02-21 18:06 ` Geert Uytterhoeven 2017-02-21 18:06 ` Geert Uytterhoeven 2017-02-21 18:06 ` Geert Uytterhoeven 2017-02-21 18:18 ` Mark Rutland 2017-02-21 18:18 ` Mark Rutland 2017-02-21 18:18 ` Mark Rutland 2017-02-21 18:23 ` Geert Uytterhoeven 2017-02-21 18:23 ` Geert Uytterhoeven 2017-02-21 18:23 ` Geert Uytterhoeven 2017-02-21 18:23 ` Geert Uytterhoeven 2017-02-21 17:22 ` Sudeep Holla 2017-02-21 17:22 ` Sudeep Holla 2017-02-21 17:22 ` Sudeep Holla 2017-02-21 17:22 ` Sudeep Holla 2017-02-22 13:47 ` Geert Uytterhoeven 2017-02-22 13:47 ` Geert Uytterhoeven 2017-02-22 13:47 ` Geert Uytterhoeven 2017-02-22 14:35 ` Sudeep Holla 2017-02-22 14:35 ` Sudeep Holla 2017-02-22 14:35 ` Sudeep Holla 2017-02-20 20:33 ` [PATCH/RFC 4/6] drivers: firmware: psci: Fix non-PMIC wake-up if SYSTEM_SUSPEND cuts power Geert Uytterhoeven 2017-02-20 20:33 ` Geert Uytterhoeven 2017-02-21 10:50 ` Sudeep Holla 2017-02-21 10:50 ` Sudeep Holla 2017-02-21 16:36 ` Geert Uytterhoeven 2017-02-21 16:36 ` Geert Uytterhoeven 2017-02-21 16:36 ` Geert Uytterhoeven 2017-02-21 16:49 ` Sudeep Holla 2017-02-21 16:49 ` Sudeep Holla 2017-02-21 16:49 ` Sudeep Holla 2017-02-21 11:07 ` Pavel Machek 2017-02-21 11:07 ` Pavel Machek 2017-02-21 16:36 ` Geert Uytterhoeven 2017-02-21 16:36 ` Geert Uytterhoeven 2017-02-21 16:36 ` Geert Uytterhoeven 2017-02-21 17:54 ` Mark Rutland 2017-02-21 17:54 ` Mark Rutland 2017-02-21 17:48 ` Mark Rutland 2017-02-21 17:48 ` Mark Rutland 2017-02-22 14:05 ` Geert Uytterhoeven 2017-02-22 14:05 ` Geert Uytterhoeven 2017-02-22 14:05 ` Geert Uytterhoeven 2017-02-22 14:57 ` Rafael J. Wysocki 2017-02-22 14:57 ` Rafael J. Wysocki 2017-02-22 14:57 ` Rafael J. Wysocki 2017-02-22 14:57 ` Rafael J. Wysocki 2017-02-20 20:33 ` [PATCH/RFC 5/6] arm64: dts: r8a7795: Fix non-PMIC wake-up sources Geert Uytterhoeven 2017-02-20 20:33 ` Geert Uytterhoeven 2017-02-20 20:33 ` Geert Uytterhoeven 2017-02-20 20:33 ` [PATCH/RFC 6/6] arm64: dts: r8a7796: " Geert Uytterhoeven 2017-02-20 20:33 ` Geert Uytterhoeven 2017-02-21 10:38 ` [PATCH/RFC 0/6] PSCI: Fix non-PMIC wake-up if SYSTEM_SUSPEND cuts power Sudeep Holla 2017-02-21 10:38 ` Sudeep Holla 2017-02-21 16:21 ` Geert Uytterhoeven 2017-02-21 16:21 ` Geert Uytterhoeven 2017-02-21 16:21 ` Geert Uytterhoeven 2017-02-21 16:45 ` Sudeep Holla 2017-02-21 16:45 ` Sudeep Holla 2017-02-21 16:45 ` Sudeep Holla 2017-02-21 16:45 ` Sudeep Holla 2017-02-21 17:34 ` Geert Uytterhoeven 2017-02-21 17:34 ` Geert Uytterhoeven 2017-02-21 17:34 ` Geert Uytterhoeven 2017-02-21 17:51 ` Sudeep Holla 2017-02-21 17:51 ` Sudeep Holla 2017-02-21 17:51 ` Sudeep Holla 2017-02-21 18:27 ` Sudeep Holla 2017-02-21 18:27 ` Sudeep Holla 2017-02-21 18:27 ` Sudeep Holla 2017-02-21 18:27 ` Sudeep Holla 2017-02-21 18:45 ` Sudeep Holla 2017-02-21 18:45 ` Sudeep Holla 2017-02-21 18:45 ` Sudeep Holla 2017-02-21 18:45 ` Sudeep Holla 2017-02-22 1:14 ` Rafael J. Wysocki 2017-02-22 1:14 ` Rafael J. Wysocki 2017-02-22 1:14 ` Rafael J. Wysocki 2017-02-22 11:03 ` Sudeep Holla 2017-02-22 11:03 ` Sudeep Holla 2017-02-22 11:03 ` Sudeep Holla 2017-02-22 13:38 ` Geert Uytterhoeven 2017-02-22 13:38 ` Geert Uytterhoeven 2017-02-22 13:38 ` Geert Uytterhoeven 2017-02-22 14:32 ` Sudeep Holla 2017-02-22 14:32 ` Sudeep Holla 2017-02-22 14:32 ` Sudeep Holla 2017-02-22 14:32 ` Sudeep Holla 2017-02-22 14:50 ` Rafael J. Wysocki 2017-02-22 14:50 ` Rafael J. Wysocki 2017-02-22 14:50 ` Rafael J. Wysocki 2017-02-22 14:50 ` Rafael J. Wysocki 2017-02-22 15:24 ` Sudeep Holla 2017-02-22 15:24 ` Sudeep Holla 2017-02-22 15:24 ` Sudeep Holla 2017-02-22 15:24 ` Sudeep Holla 2017-02-23 15:26 ` Geert Uytterhoeven [this message] 2017-02-23 15:26 ` Geert Uytterhoeven 2017-02-23 15:26 ` Geert Uytterhoeven 2017-02-23 15:34 ` Geert Uytterhoeven 2017-02-23 15:34 ` Geert Uytterhoeven 2017-02-23 15:34 ` Geert Uytterhoeven 2017-02-23 15:58 ` Sudeep Holla 2017-02-23 15:58 ` Sudeep Holla 2017-02-23 15:58 ` Sudeep Holla 2017-02-23 15:53 ` Sudeep Holla 2017-02-23 15:53 ` Sudeep Holla 2017-02-23 15:53 ` Sudeep Holla 2017-02-23 15:53 ` Sudeep Holla 2017-02-22 13:14 ` Geert Uytterhoeven 2017-02-22 13:14 ` Geert Uytterhoeven 2017-02-22 13:14 ` Geert Uytterhoeven 2017-02-22 14:31 ` Rafael J. Wysocki 2017-02-22 14:31 ` Rafael J. Wysocki 2017-02-22 14:31 ` Rafael J. Wysocki 2017-02-22 14:31 ` 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='CAMuHMdVTEbqEocYwu=KW_uXpykYkVwUgSJBnLvQp_Epn8Pjp1g@mail.gmail.com' \ --to=geert@linux-m68k.org \ --cc=devicetree@vger.kernel.org \ --cc=geert+renesas@glider.be \ --cc=john.stultz@linaro.org \ --cc=len.brown@intel.com \ --cc=lina.iyer@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux-renesas-soc@vger.kernel.org \ --cc=lorenzo.pieralisi@arm.com \ --cc=magnus.damm@gmail.com \ --cc=mark.rutland@arm.com \ --cc=pavel@ucw.cz \ --cc=rjw@rjwysocki.net \ --cc=robh+dt@kernel.org \ --cc=sudeep.holla@arm.com \ --cc=tglx@linutronix.de \ /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: linkBe 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.