From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sven Neumann Subject: Re: 2.6.35.6 fails to suspend (pxa2xx-mci.0) Date: Mon, 11 Oct 2010 10:31:40 +0200 Message-ID: <1286785900.3101.9.camel@sven> References: <1286177435.2140.5.camel@sven> <201010072323.05218.rjw@sisk.pl> <1286526197.4493.19.camel@sven> <201010082208.25767.rjw@sisk.pl> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Ohad Ben-Cohen Cc: "Rafael J. Wysocki" , Daniel Mack , Colin Cross , Greg Kroah-Hartman , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: linux-mmc@vger.kernel.org On Sat, 2010-10-09 at 03:07 +0200, Ohad Ben-Cohen wrote: > On Fri, Oct 8, 2010 at 10:08 PM, Rafael J. Wysocki wrote: > > There is a problem with the pxa2xx-mci.0 suspend that has been introduced > > some time after 2.6.34, but it is not related to commit 152e1d5920. > > Sven, what type of card do you have in that slot ? is it SDIO ? what's > the function driver ? > > I have a hunch about this, but it may be a wild guess as I don't know > what's your setup exactly. > > Anyway, can you please try this and see if anything changes ? > > diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c > index c94565d..515ff39 100644 > --- a/drivers/mmc/core/core.c > +++ b/drivers/mmc/core/core.c > @@ -1682,6 +1682,19 @@ int mmc_suspend_host(struct mmc_host *host) > if (host->bus_ops && !host->bus_dead) { > if (host->bus_ops->suspend) > err = host->bus_ops->suspend(host); > + if (err == -ENOSYS || !host->bus_ops->resume) { > + /* > + * We simply "remove" the card in this case. > + * It will be redetected on resume. > + */ > + if (host->bus_ops->remove) > + host->bus_ops->remove(host); > + mmc_claim_host(host); > + mmc_detach_bus(host); > + mmc_release_host(host); > + host->pm_flags = 0; > + err = 0; > + } > } > mmc_bus_put(host); > > The reason I'm asking this is because it seems like commit > 4c2ef25fe0b847d2ae818f74758ddb0be1c27d8e "mmc: fix all hangs related > to mmc/sd card insert/removal during suspend/resume" has broken > suspending SDIO function drivers which don't have a suspend handler > (or do have one, but for some reason it returns -ENOSYS, like > libertas_sdio's does). Yes, this patch fixes the problem. Tested with v2.6.35-rc7. With above patch applied, suspend (and resume!) work again with and without pm_async=0. Thanks a lot to all of you for your help with this problem. Regards, Sven