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>
1 file changed