diff options
| author | Vaibhav Hiremath <[email protected]> | 2016-08-03 17:15:38 +0530 |
|---|---|---|
| committer | Greg Kroah-Hartman <[email protected]> | 2016-08-03 15:43:51 +0200 |
| commit | 8ef0b5383110977d81746cd0b09c3877d51c3a67 (patch) | |
| tree | e401faaa6f7119157efc52da52ffb2eb0a59d09d /tools/perf/scripts/python | |
| parent | 60793c9be9a140e2102a0f64a38d34e9b28a1357 (diff) | |
greybus: arche-platform: Reset SVC & APB only if turned off by SUSPEND_PREPARE
There is possible race condition in arche platform driver for
maintaining of ->state field, when shared with timesync driver.
Assume device booted fine, all connected modules have been enumerated
correctly. As part of suspend-resume operation we have pm_notifier
callback, where we turn off SVC & APB and coldboot on resume.
In the process of resume, all modules gets enumerated again, and
timesync driver does come into picture everytime.
So when timesync driver requests arche-platform to change the state
to TIMESYNC and in the middle of sync operation, if suspend gets
triggered, then execution lands into arche-platform->pm_notifier callback,
leading to race condition in the driver, where it checks for (state != ACTIVE)
in PM_SUSPEND_PREPARE and returns, but in PM_POST_SUSPEND it just simply
coldboots SVC & APB, which would inbalance all resources (including IRQ).
So we need a add check in PM_POST_SUSPEND, to make sure that, we only
coldboot devices if they are in to off state,
i.e. if (state != OFF) then return.
Testing Done: Done regressive suspend/resume testing on EVT2 platform.
Note that, I some time hit issue.
Signed-off-by: Vaibhav Hiremath <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions