On Mon, Sep 19, 2011 at 10:14 AM, Sunil Pillai
<sunilpillai....@gmail.com> wrote:
>
> Hi Pavan,
>
> Usual Linux PM would follow the below steps:
> 1) Freezing Tasks [enter_state() calls suspend_prepare() which calls
> suspend_freeze_processes()]

Stopping you right here, Because of the answer, PM_SUSPEND_PREPARE is
before the user space is frozen.
I suppose a few drivers are already doing this (example mmc).....


Although I will let someone else comment on this....

> 2) each driver's suspend routine is then invoked (In this case wifi
> driver's suspend gets called here)
> 3) This is followed by calling device suspend routines move devices to
> low power mode
>
> However as you pointed in case of Android, before all above steps
> happen, the early suspend routines of drivers get called  & a check is
> made to see if any wakelocks are held. (echo mem > /sys/power/state
> from PowerManagerService) If no wakelocks are held only then the usual
> linux routine described above is then followed.
>
> So to answer your questions:
> 1. Android power management gets into action first by calling early
> suspend routines & checks if any wakelocks are held which can block
> the suspend resume.  [So the userspace wifi daemon cannot hold a
> wakelock here because it will not let the first step of suspend
> routine take place. Its not premature for this to happen in this case]
>
> 2.Secondly, following normal linux suspend routine,  Freezing of
> processes takes place. [Thus the userspace wifi daemon also gets
> freezed here to ram since no wakelocks are held by PowerManagerService
> or any other module]
>
> 3. Now the wifi driver specific suspend routine gets invoked. But as I
> discussed it cannot finish on time since it has to  post a message to
> the userspace wifi daemon to move it to the proper state)
> In this case since the userspace wifi daemon is already freezed in
> step(2) above, the driver's suspend doesnot complete on time given by
> android to finish the device suspend routine.
>
> Hence, I'm looking for a way to see if the use space daemon in this
> case can somehow be marked as non-freezable task.I'm not sure if there
> is a proper way in which this situation can be handled!!
>
> Hope this makes my problem more clear.
>
> Regards,
> Sunil
>
>
>
> On Sep 19, 4:46 pm, Pavan Savoy <pavan.sa...@gmail.com> wrote:
>> On Mon, Sep 19, 2011 at 6:42 AM, Sunil Pillai <sunilpillai....@gmail.com> 
>> wrote:
>>
>> > Hello All,
>>
>> > I have this situation in my system where the android kernel suspend
>> > procedure fails due to below sequence:
>>
>> > 1. suspend invoked by the android
>> > 2. All user space processses get freezed including my android
>> > userspace deamon process-X which has wifi userspace component
>>
>> Shouldn't this be happening, only if the "suspend" is a success ?
>> Seems like the "freezing all process" - is happening prematurely in this 
>> case ?
>>
>> Also, the user-space process can always register/communicate with
>> PowerManagerService in Android - to prevent suspend - wake-lock unless
>> the WiFi - tells that it is alright to go into suspend.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> > 3. Wifi suspend driver gets trigerred; But this in has to call a
>> > routine in userspace process-X (to suspend userspace Wifi component)
>> > which is already freezed and this call (sync call) times out after
>> > some time(10 ms)
>>
>> > This basically fails the suspend procedure for the Wifi driver. A
>> > possible solution I feel is that the userspace  process-X doesnot get
>> > freezed unless the Wifi driver suspends itself successfully (including
>> > suspending the userspace Wifi component)
>>
>> > Is this possible & if not how can I handle such a situation?
>>
>> > Regards,
>> > Sunil
>>
>> > --
>> > unsubscribe: android-kernel+unsubscr...@googlegroups.com
>> > website:http://groups.google.com/group/android-kernel
>>
>> --
>> --Pavan Savoy
>
> --
> unsubscribe: android-kernel+unsubscr...@googlegroups.com
> website: http://groups.google.com/group/android-kernel



-- 
--Pavan Savoy

-- 
unsubscribe: android-kernel+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-kernel

Reply via email to