summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorKonstantin Dorfman <kdorfman@codeaurora.org>2015-12-20 15:16:40 +0200
committerSubhash Jadavani <subhashj@codeaurora.org>2016-05-31 15:27:59 -0700
commit8b5ff5dc3ecaddaf70be69406bfc92cb168f8992 (patch)
tree302ae630500c00a9e7da89e0268d99f881c7dc6e /include
parentf33ab72df235e4802ba9e95e3d0978f5903fb0ed (diff)
mmc: core: resolve deadlock between devfreq update and suspend contexts
When mmc request timeout occurs (eg. card is not responding), it is possible that devfreq update poll interval ended and devfreq update started. Update context takes devfreq lock and block on __mmc_claim_host(). Error handling flow (same context that executes mmc request) tries to suspend clock scaling, the flow is trying to take devfreq lock while holding (and not releasing) mmc host. Although it is incrementing devfreq_abort counter, but it is not enough to cause devfreq update context to release devfreq lock, because the context scheduled out from execution. This patch wakes up devfreq update context, it causes to break polling loop waiting for mmc host exclusive access (because devfreq_abourt countr > 0), so devfreq lock will be released and clock scaling may be successfully suspended. Change-Id: I3d1e7b38d7d281594b49d8452198ed4c1e550b73 Signed-off-by: Konstantin Dorfman <kdorfman@codeaurora.org>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions