Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0aef437 authored by Girish Mahadevan's avatar Girish Mahadevan
Browse files

msm_serial_hs: Fix race condition blocking suspend and remove wakeup source



The __pm_stay_awake/relax() calls were moved to runtime callbacks as a
means to fix data loss due to race conditions between incoming userspace
commands and executing PM related callbacks.
However calling the __pm_relax (to notify wakeup event processing)
as part of the runtime suspend callback could be race prone between
the system suspend and the runtime framework. If the system suspend
gets to run before the runtime callback, the wakeup event will block
system suspend.
Remove the use of the wakeup source altogether, instead do these:
1. Block system suspend based on the current clk request count and the
   RPM state of the device (to detect potential inbound userspace
   requests).
2. If the driver is in the process of executing the system suspend
   callback, ignore any userspace requests.
3. If the client calls a shutdown without an unvote ioctl, zero out
   the client_count vote forcefully to allow suspend.

CRs-Fixed: 977421
Change-Id: I17de85f29b555c1a4563dd59bec3ba3084c3604f
Signed-off-by: default avatarGirish Mahadevan <girishm@codeaurora.org>
parent 17d7bd58
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment