From e9cc73402e87bfa62f503c7f319094f6cbdfe469 Mon Sep 17 00:00:00 2001 From: Veerabhadrarao Badiganti Date: Thu, 9 Feb 2017 20:23:17 +0530 Subject: mmc: core: Retry claim host in mmc_sd_detect Use mmc_try_claim_host with a timeout instead of mmc_claim_host in mmc_sd_detect. This is to ensure that mmc rescan work item is doesn't get blocked on claim_host for longer period. In the pm_suspend path, we cancel the mmc_rescan work item. If this work item is already scheduled, suspend would be blocked till mmc_rescan gets finished. In case, mmc_rescan is blocked on claim_host lock, pm_suspend could get blocked for longer period. This can result in momentary UI freeze since pm_suspend is blocked for longer duration. This change is to prevent this scenario. Change-Id: Ib93bae6745a153bad3579ae42f46c3c3a7c1b95a Signed-off-by: Veerabhadrarao Badiganti --- include/linux/mmc/core.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/linux') diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h index a5a3bb286361..839e9ae39564 100644 --- a/include/linux/mmc/core.h +++ b/include/linux/mmc/core.h @@ -201,6 +201,7 @@ extern unsigned int mmc_align_data_size(struct mmc_card *, unsigned int); extern int __mmc_claim_host(struct mmc_host *host, atomic_t *abort); extern void mmc_release_host(struct mmc_host *host); +extern int mmc_try_claim_host(struct mmc_host *host, unsigned int delay); extern void mmc_get_card(struct mmc_card *card); extern void mmc_put_card(struct mmc_card *card); -- cgit v1.2.3