kernel-ark/drivers/mmc/core
Guennadi Liakhovetski 0db13fc2ab mmc: fix a deadlock between system suspend and MMC block IO
Performing MMC block IO with simultaneous STR can lead to a deadlock: the
mmc_pm_notify() function claims the host and then calls bus .remove()
method, which lands in mmc_blk_remove(), which calls mmc_blk_remove_req()
then it goes to -> mmc_cleanup_queue() -> kthread_stop(), which waits for
the mmc-block thread to stop. If the mmc-block thread at that time is
processing block requests, it will also try to claim the host in
mmc_blk_issue_rq() and block there. This patch fixes the problem by
calling .remove() before claiming the host.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Arindam Nath <arindam.nath@amd.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
2012-01-12 15:17:17 -05:00
..
bus.c mmc: core: HS200 mode support for eMMC 4.5 2012-01-12 15:17:15 -05:00
bus.h mmc: rename dev_to_mmc_card() to mmc_dev_to_card() 2010-10-23 21:11:12 +08:00
cd-gpio.c mmc: add a generic GPIO card-detect helper 2012-01-11 23:58:45 -05:00
core.c mmc: fix a deadlock between system suspend and MMC block IO 2012-01-12 15:17:17 -05:00
core.h mmc: allow upper layers to know immediately if card has been removed 2012-01-11 23:58:43 -05:00
debugfs.c mmc: core: HS200 mode support for eMMC 4.5 2012-01-12 15:17:15 -05:00
host.c mmc: core: Fixup delayed work clock gating patch 2012-01-11 23:58:43 -05: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 a generic GPIO card-detect helper 2012-01-11 23:58:45 -05:00
mmc_ops.c mmc: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:32:06 -04:00
mmc_ops.h mmc: core: support HPI send command 2011-10-26 16:32:29 -04:00
mmc.c mmc: core: HS200 mode support for eMMC 4.5 2012-01-12 15:17:15 -05:00
quirks.c mmc: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:32:06 -04:00
sd_ops.c mmc: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:32:06 -04:00
sd_ops.h
sd.c mmc: core: HS200 mode support for eMMC 4.5 2012-01-12 15:17:15 -05:00
sd.h mmc: sd: add support for driver type selection 2011-05-24 23:53:24 -04:00
sdio_bus.c mmc: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:32:06 -04:00
sdio_bus.h
sdio_cis.c mmc: replace printk with appropriate display macro 2011-10-26 16:32:22 -04:00
sdio_cis.h
sdio_io.c mmc: sdio: Fix to support any block size optimally 2012-01-11 23:58:40 -05:00
sdio_irq.c mmc: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:32:06 -04:00
sdio_ops.c mmc: sdio: Fix to support any block size optimally 2012-01-11 23:58:40 -05:00
sdio_ops.h
sdio.c mmc: core: HS200 mode support for eMMC 4.5 2012-01-12 15:17:15 -05:00