Re: [Query] mmc/sdhci: Suspend hangs if card is inserted at suspend.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sujit Reddy Thumma wrote:
Hi Ulf,

I see similar issue with your patch in 3.2 "mmc: core: Prevent too long response times for suspend".

                 if (mmc_try_claim_host(host)) {
<snip>
/* if CONFIG_MMC_UNSAFE_RESUME is not set, remove() callback would get blocked until mmcqd gets mmc_claim_host() causing deadlock here */
                                 if (host->bus_ops->remove)
                                         host->bus_ops->remove(host);
<snip>

You are definitely right. I did not test my patch properly, without CONFIG_MMC_UNSAFE_RESUME, I realize now.

                 } else {
                         err = -EBUSY;
                 }
         }

Proabably, we can do something like this:

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 5278ffb..0177d4a 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -2309,6 +2309,7 @@ int mmc_suspend_host(struct mmc_host *host)
* We simply "remove" the card in this case.
                                  * It will be redetected on resume.
                                  */
+                               mmc_do_release_host(host);
                                 if (host->bus_ops->remove)
                                         host->bus_ops->remove(host);
                                 mmc_claim_host(host);
@@ -2317,8 +2318,9 @@ int mmc_suspend_host(struct mmc_host *host)
                                 mmc_release_host(host);
                                 host->pm_flags = 0;
                                 err = 0;
+                       } else {
+                               mmc_do_release_host(host);
                         }
-                       mmc_do_release_host(host);

Your changes looks feasible! Thanks for fixing this issue!


                 } else {
                         err = -EBUSY;
                 }

Please let me know if you agree. I can post a patch for this.



BR
Ulf Hansson
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux