Re: Attempted summary of suspend-blockers LKML thread

Arve Hjønnevåg
2010-08-04T06:50:29Z

2010/8/3 Olivier Galibert <galibert@pobox.com>:
> On Tue, Aug 03, 2010 at 11:03:15PM -0700, Arve Hjønnevåg wrote:
>> 2010/8/3 Olivier Galibert <galibert@pobox.com>:
>> > On Tue, Aug 03, 2010 at 08:39:22PM -0700, Arve Hjønnevåg wrote:
>> >> If you just program the alarm you will wake up see that the monotonic
>> >> clock has not advanced and set the alarm another n seconds into the
>> >> future. Or are proposing that suspend should be changed to keep the
>> >> monotonic clock running?
>> >
>> > You're supposed to fix the clock after you wake up.  That's part of
>> > the cost of going suspend.
>>
>> I'm not sure what you are referring to. The generic Linux timekeeping
>> code makes sure the monotonic clock stops while the system is
>> suspended regardless of what values the (hardware specific)
>> clocksource returns.
>
> That just means the android-like suspend should not act in that
> specific area the same as the generic suspend to ram.  Which is not

Huh? Android uses the generic suspend code.

> entirely surprising.  In any case, it's not "keep the monotonic clock
> running", which would cost power.  It's fix it up afterwards, using
> the same means you already do but perhaps at a higher level currently.
> People don't want to see the wrong time of the day just because the
> phone went to suspend.  Laptop STR is different in perception because

The monotonic clock is not the same as the realtime clock which is
used for time of day.

> it shuts down things people don't want to see shutdown just by being
> idle, namely wifi connectivity.
>
> If your next polling timer is in half an hour and the screen/touchpad
> are off, you want to go as low in power as possible until then, and
> that's the deepest level of idle you can find that responds to alarms
> which may happen to be called suspend.  But from a user point of view,

Calling the deepest idle state suspend is just confusing. Linux
suspend has a different api than idle. In suspend every driver that
has a suspend hook is notified. Also, once cpu can be idle while
another cpu is running. Suspend is a system wide.

> it's just another idle level.  And from a power management code/policy
> decisions point of view, it should be the same.
>

--
Arve Hjønnevåg