mmc: core: Fix race between runtime PM suspend and block requests

There is a possible race with mmc_claim_host() in mmc_sd_suspend()/
mmc_suspend() and mmc_claim_host() in mmc_blk_issue_rq() when runtime
pm is enabled. Fix this by blocking processing of requests until the
previous runtime suspend is processed and then resume as part of
msmsdcc_enable(). Previous fix has card detection failure as a side effect
during resume.

Change-Id: I9cb31269638d9db4e630eb22b973a5335af1bda4
Signed-off-by: Sujith Reddy Thumma <sthumma@codeaurora.org>
[sboyd: Dropped msm driver change]
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
This commit is contained in:
Sujith Reddy Thumma
2011-02-17 21:37:48 +05:30
committed by Stephen Boyd
parent 7788228786
commit 4e5824f8ce
2 changed files with 10 additions and 0 deletions

View File

@@ -287,6 +287,7 @@ struct mmc_host {
wait_queue_head_t wq;
struct task_struct *claimer; /* task that has host claimed */
struct task_struct *suspend_task;
int claim_cnt; /* "claim" nesting count */
struct delayed_work detect;