diff options
author | Sayali Lokhande <sayalil@codeaurora.org> | 2018-02-19 16:38:26 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-03-18 21:15:38 -0700 |
commit | 7a4c37e16d1d8f6cb779b43981aa57bdbabb0b15 (patch) | |
tree | aa251a4021a8d820f06b5efaee1a4f599c8a04ad /drivers/usb/chipidea | |
parent | 9280a655b9c11b73024494f2885de6a84457ed9d (diff) |
mmc: host: Cancel clock gating work in suspend
In some scenarios, it is observed that mmc clock gating
work is racing with pm suspend resulting in unclocked
register access.
Sequence of events:
1) System is going to suspend (PM_SUSPEND_PREPARE)
2) Sd card is inserted and mmc_power_up() is called
as part of mmc_sd_detect.
3) mmc_power_up() released clocks and clock gate work
is scheduled.
4) As part of PM suspend clocks are disabled.
5) Clock gate work(scheduled at step 3) kicks in now
after suspend and unclocked register access happens in
sdhci_set_bus_width() function.
Logs:
mmc1: Enter mode PM_SUSPEND_PREPARE
mmc_sd_detect(mmc1): Re-init card success in mmc_sd_detect
=> mmc_power_up (clocks released here)
mmc1: Enter mode PM_POST_SUSPEND
mmc1: sdhci_msm_runtime_suspend: Enter
mmc1: sdhci_msm_runtime_suspend: Exit
mmc1: Enter mode PM_SUSPEND_PREPARE
mmc1: mmc_bus_suspend: Enter
mmc1: mmc_bus_suspend: Exit 0
mmc1: sdhci_msm_suspend: Enter
mmc1: sdhci_msm_suspend: already runtime suspended
mmc1: sdhci_msm_disable_controller_clock: disabled clock
=> PM_SUSPEND disabled clocks
mmc1: sdhci_msm_suspend: Exit ret: 0
mmc_host_clk_gate_delayed: mmc1: Enter
mmc_host_clk_gate_delayed: mmc1: calling gate_clock..
<>
Unhandled fault: external abort
Workqueue: events mmc_host_clk_gate_work
PC is at sdhci_set_bus_width+0x2c/0xb4
To fix this unclocked access, cancel any clock gating work
scheduled by mmc_host_clk_release() before turning off clocks
in suspend.
Change-Id: I1165ad2c5a1eb52abf18fef12667e93c947ae417
Signed-off-by: Sayali Lokhande <sayalil@codeaurora.org>
Diffstat (limited to 'drivers/usb/chipidea')
0 files changed, 0 insertions, 0 deletions