> On Tue, 3 Aug 2010, Arve Hj?nnev?g wrote:
>
>> On Tue, Aug 3, 2010 at 5:51 PM, <david@lang.hm> wrote:
>>>
>>> On Tue, 3 Aug 2010, Paul E. McKenney wrote:
>>>
>>>> On Tue, Aug 03, 2010 at 04:19:25PM -0700,
david@lang.hm wrote:
>>>>>
>>>>> On Tue, 3 Aug 2010, Arve Hj?nnev?g wrote:
>>>>>
>>>>>> 2010/8/2 á<david@lang.hm>:
>>>>>>>
>>>>>>> so what is the fundamental difference between deciding to go into
>>>>>>> low-power
>>>>>>> idle modes to wake up back up on a given point in the future and
>>>>>>> deciding
>>>>>>> that you are going to be idle for so long that you may as well
>>>>>>> suspend
>>>>>>> until
>>>>>>> there is user input?
>>>>>>>
>>>>>>
>>>>>> Low power idle modes are supposed to be transparent. Suspend stops the
>>>>>> monotonic clock, ignores ready threads and switches over to a separate
>>>>>> set of wakeup events/interrupts. We don't suspend until there is user
>>>>>> input, we suspend until there is a wakeup event (user-input, incoming
>>>>>> network data/phone-calls, alarms etc..).
>>>>>
>>>>> s/user input/wakeup event/ and my question still stands.
>>>>>
>>>>> low power modes are not transparent to the user in all cases (if the
>>>>> screen backlight dimms/shuts off a user reading something will
>>>>> notice, if the system switches to a lower clock speed it can impact
>>>>> user response time, etc) The system is making it's best guess as to
>>>>> how to best srve the user by sacraficing some capibilities to save
>>>>> power now so that the power can be available later.
>>>>>
>>>>> as I see it, suspending until a wakeup event (button press, incoming
>>>>> call, alarm, etc) is just another datapoint along the same path.
>>>>>
>>>>> If the system could not wake itself up to respond to user input,
>>>>> phone call, alarm, etc and needed the power button pressed to wake
>>>>> up (or shut down to the point where the battery could be removed and
>>>>> reinstalled a long time later), I would see things moving into a
>>>>> different category, but as long as the system has the ability to
>>>>> wake itself up later (and is still consuming power) I see the
>>>>> suspend as being in the same category as the other low-power modes
>>>>> (it's just more expensive to go in and out of)
>>>>>
>>>>>
>>>>> why should the suspend be put into a different category from the
>>>>> other low-power states?
>>>>
>>>> OK, I'll bite...
>>>
>>> thanks, this is not intended to be a trap.
>>>
>>>> From an Android perspective, the differences are as follows:
>>>>
>>>> 1. á á áDeep idle states are entered only if there are no runnable
>>>> tasks.
>>>> á á á áIn contrast, opportunistic suspend can happen even when there
>>>> á á á áare tasks that are ready, willing, and able to run.
>>>
>>> Ok, this is a complication to what I'm proposing (and seems a little odd,
>>> but I can see how it can work), but not neccessarily a major problem. it
>>> depends on exactly how the decision is made to go into low power states
>>> and/or suspend. If this is done by an application that is able to look at
>>> either all activity or ignore one cgroup of processes at different times
>>> in
>>> it's calculations than this would work.
>>>
>>>> 2. á á áThere can be a set of input events that do not bring the system
>>>> á á á áout of suspend, but which would bring the system out of a deep
>>>> á á á áidle state. áFor example, I believe that it was stated that one
>>>> á á á áof the Android-based smartphones ignores touchscreen input while
>>>> á á á ásuspended, but pays attention to it while in deep idle states.
>>>
>>> I see this as simply being a matter of what devices are still enabled at
>>> the
>>> different power savings levels. At one level the touchscreen is still
>>> powered, while at another level it isn't, and at yet another level you
>>> have
>>> to hit the power soft-button. This isn't fundamentally different from
>>> powering off a USB peripheral that the system decides is idle (and then
>>> not
>>> seeing input from it until something else wakes the system)
>>
>> The touchscreen on android devices is powered down long before we
>> suspend, so that is not a good example. There is still a significant
>> difference between suspend and idle though. In idle all interrupts
>> work, in suspend only interrupts that the driver has called
>> enable_irq_wake on will work (on platforms that support it).
>
> are you talking about Android here or are you talking genricly across all
> platforms?
>