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. -- Regards, Sudeep