On Tuesday, February 21, 2017 06:45:13 PM Sudeep Holla wrote: > > On 21/02/17 18:27, Sudeep Holla wrote: > > > > > > On 21/02/17 17:51, Sudeep Holla wrote: > >> > >> > >> On 21/02/17 17:34, Geert Uytterhoeven wrote: > > > > [...] > > > >>> > >>> The SoC can wake-up. It's just not guaranteed that it can wake-up using > >>> the wakeup-source configured from Linux. Which wakeup-sources are available > >>> depends on the actual PSCI implementation. It's not specified by the PSCI > >>> specification. > >>> > >>>> Just botching whatever shallow state you can enter on a particular SoC > >>>> into standard "mem" state sounds *horrible* to me. > >>> > >>> That's more or less what /sys/power/mem_sleep does, though. > >>> > >> > >> OK, I will go through that in detail. > >> > > > > OK, I went through the patch and the main intention is was added. > > So I will begin by summarizing my understanding: > > > > A new suspend interface(/sys/power/mem_sleep) is added to allow the > > "mem" string in /sys/power/state to represent multiple things that can > > be selected. > > > > Before: > > A. echo freeze > /sys/power/state ---> Enters s2idle > > B. echo mem > /sys/power/state ---> Enters s2r(a.k.a now deep mem sleep) > > > > After: > > 1. echo freeze > /sys/power/state ---> Enters s2idle still same > > 2. echo s2idle > /sys/power/mem_sleep > > echo mem > /sys/power/state ---> Also enter s2idle > > 3. echo deep > /sys/power/mem_sleep > > echo mem > /sys/power/state ---> Also enter s2r(same as [B] above) > > > > Please note I have carefully dropped standby/shallow as we will not > > support that state on ARM64 platforms(refer previous discussions for the > > same) > > > > Now IIUC, you need 2 above. So, since this new interface allow mem to > > mean "s2idle", we need to fix the core to register default suspend_ops > > to achieve what you need. > > I take this back, you have everything you need in place, nothing needs > to be done. I just checked again. If I don't register PSCI suspend_ops, > I still get mem in /sys/power/state with s2idle in /sys/power/mem_sleep > which is exactly what we need. Again we don't support standby/shallow > state on ARM64/PSCI. Except for one thing which may or may not be a concern here. Suspend to idle should only go into states in which all of the available wakeup devices work. If there are devices that cannot wake you up from a given state, this isn't "idle" any more, is it? As for the device wakeup disable/enable interface, it is for controlling whether or not a given device should be allowed to generate wakeup signals at all. The information on what states a given device can wake up the system from is platform-specific and generally would need to be taken into consideration at the platform level. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html