mmc: dw_mmc: insmod followed by rmmod will hung for eMMC
authorPrabu Thangamuthu <Prabu.T@synopsys.com>
Thu, 28 May 2015 12:21:06 +0000 (12:21 +0000)
committerUlf Hansson <ulf.hansson@linaro.org>
Fri, 12 Jun 2015 07:31:01 +0000 (09:31 +0200)
commit048fd7e665cef45630102dc8bf81971fbc82e52c
tree223c1925b70c5d5610285f8852db60a31f6a388c
parent5fd26c7ecb32082745b0bd33c8e35badd1cb5a91
mmc: dw_mmc: insmod followed by rmmod will hung for eMMC

Remove module of dw_mmc driver will hung for eMMC devices if we follow the
steps which are listed below,
insmod dw_mmc.ko
insmod dw_mmc-pci.ko
rmmod dw_mmc-pci.ko

The root cause for this issue is, dw_mci_remove() will disable all the
interrupts by programming 0x0 to INTMASK register then it will call
dw_mci_cleanup_slot(). But dw_mci_cleanup_slot() is issuing CMD6 to
disable the eMMC boot partition and it is waiting for Command Complete
interrupt. Since INTMASK was already cleared by dw_mci_remove(), Command
Complete interrupt is not reaching the system. This leads to process hung.

Signed-off-by: Prabu Thangamuthu <prabu.t@synopsys.com>
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/dw_mmc.c