On Thu, 2011-10-13 at 15:29 +0100, Russell King - ARM Linux wrote: > On Tue, Oct 11, 2011 at 04:06:41PM +0200, Ulf Hansson wrote: > > The patch "mmc: core: move ->request() call from atomic context", > > is the reason to why this change is possible. This simplifies the > > error handling code execution path quite a lot and potentially also > > fixes some error handling hang problems. > > > > Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxxxxxx> > > This doesn't look right: > > void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq) > { > if (err && cmd->retries) { > host->ops->request(host, mrq); > > So, not dropping the spinlock results in calling the request function > with the spinlock held - and as the request function then goes on to > lock the spinlock, we will deadlock. Indeed, deadlock behaviour at this point is what I see with this patch on a Versatile Express board running 3.0-rc9. -- Tixy -- 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