linux-stable/drivers/mmc/core
Ulf Hansson 7f7e4129c2 mmc: core: Fix hangs related to insert/remove of cards
During a rescan operation mmc_attach(sd|mmc|sdio) functions are
called. The error handling in these function can trigger a detach
of the bus, which also meant a power off. This is not notified by
the rescan operation which then continues to the next attach function.

If a power off has been done, the framework must never send any
new commands to the host driver, without first doing a new power up.
This will most likely trigger any host driver to hang.

Moving power off out of detach and instead handle power off
separately when it is actually needed, solves the issue.

Signed-off-by: Ulf Hansson <ulf.hansson@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Cc: <stable@kernel.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
2011-10-26 16:32:01 -04:00
..
bus.c mmc: sd: report correct speed and capacity of uhs cards 2011-05-24 23:53:46 -04:00
bus.h mmc: rename dev_to_mmc_card() to mmc_dev_to_card() 2010-10-23 21:11:12 +08:00
core.c mmc: core: Fix hangs related to insert/remove of cards 2011-10-26 16:32:01 -04:00
core.h mmc: core: Fix hangs related to insert/remove of cards 2011-10-26 16:32:01 -04:00
debugfs.c mmc: core: add random fault injection 2011-10-26 15:43:34 -04:00
host.c mmc: enable runtime PM by default 2011-10-26 15:43:35 -04:00
host.h mmc: rename mmc_host_clk_{ungate|gate} to mmc_host_clk_{hold|release} 2011-08-31 16:24:54 -04:00
Kconfig mmc: Aggressive clock gating framework 2011-01-08 22:48:03 -05:00
Makefile mmc: add per device quirk placeholder 2011-03-15 13:48:33 -04:00
mmc.c mmc: core: Fix hangs related to insert/remove of cards 2011-10-26 16:32:01 -04:00
mmc_ops.c mmc: fix integer assignments to pointer 2011-10-26 15:43:35 -04:00
mmc_ops.h mmc: core: Allow setting CMD timeout for CMD6 (SWITCH). 2011-05-24 21:01:13 -04:00
quirks.c mmc: quirks: Extends card quirks with MMC/SD quirks matching the CID. 2011-05-24 21:00:54 -04:00
sd.c mmc: core: Fix hangs related to insert/remove of cards 2011-10-26 16:32:01 -04:00
sd.h mmc: sd: add support for driver type selection 2011-05-24 23:53:24 -04:00
sd_ops.c mmc: fix integer assignments to pointer 2011-10-26 15:43:35 -04:00
sd_ops.h mmc: add erase, secure erase, trim and secure trim operations 2010-08-12 08:43:30 -07:00
sdio.c mmc: core: Fix hangs related to insert/remove of cards 2011-10-26 16:32:01 -04:00
sdio_bus.c mmc: fix runtime PM with -ENOSYS suspend case 2011-07-21 10:35:09 -04:00
sdio_bus.h mmc: basic SDIO device model 2007-09-23 19:45:31 +02:00
sdio_cis.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sdio_cis.h sdio: split up common and function CIS parsing 2007-09-23 20:44:22 +02:00
sdio_io.c sdio: add new function for RAW (Read after Write) operation 2010-05-27 09:12:40 -07:00
sdio_irq.c mmc: sdio: optimized SDIO IRQ handling for single irq 2011-05-24 23:53:50 -04:00
sdio_ops.c mmc: fix integer assignments to pointer 2011-10-26 15:43:35 -04:00
sdio_ops.h sdio: recognize io card without powercycle 2010-03-12 15:52:28 -08:00