diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2012-01-04 15:28:45 +0100 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-01-12 15:17:17 -0500 |
commit | 0db13fc2abbb0b1a8d8efee20dfbd7f3c5d54022 (patch) | |
tree | 9932b8a8bca14f536e9a23f905919d9ee9c1a10a /drivers/mmc/host/dw_mmc.h | |
parent | 3abc1e804253add41990cbe1461e79c1165108e0 (diff) | |
download | blackbird-op-linux-0db13fc2abbb0b1a8d8efee20dfbd7f3c5d54022.tar.gz blackbird-op-linux-0db13fc2abbb0b1a8d8efee20dfbd7f3c5d54022.zip |
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>
Diffstat (limited to 'drivers/mmc/host/dw_mmc.h')
0 files changed, 0 insertions, 0 deletions