forked from luck/tmp_suning_uos_patched
b78d6c5f51
Previously, it was possible for ack_mmc_irqs() to clear pending interrupt bits in the CTL_STATUS register, even though the interrupt handler had not been called. This was because of a race that existed when doing a read-modify-write sequence on CTL_STATUS. After the read step in this sequence, if an interrupt occurred (causing one of the bits in CTL_STATUS to be set) the write step would inadvertently clear it. Observed with the TMIO_STAT_RXRDY bit together with CMD53 on AR6002 and BCM4318 SDIO cards in polled mode. This patch eliminates this race by only writing to CTL_STATUS and clearing the interrupts that were passed as an argument to ack_mmc_irqs()." [matt@console-pimps.org: rewrote changelog] Signed-off-by: Yusuke Goda <yusuke.goda.sx@renesas.com> Acked-by: Magnus Damm <damm@opensource.se>" Tested-by: Arnd Hannemann <arnd@arndnet.de>" Acked-by: Ian Molton <ian@mnementh.co.uk> Cc: Matt Fleming <matt@console-pimps.org> Cc: Samuel Ortiz <sameo@linux.intel.com> Cc: Paul Mundt <lethal@linux-sh.org> Cc: <linux-mmc@vger.kernel.org> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
---|---|---|
.. | ||
at91_mci.c | ||
atmel-mci-regs.h | ||
atmel-mci.c | ||
au1xmmc.c | ||
bfin_sdh.c | ||
cb710-mmc.c | ||
cb710-mmc.h | ||
davinci_mmc.c | ||
imxmmc.c | ||
imxmmc.h | ||
jz4740_mmc.c | ||
Kconfig | ||
Makefile | ||
mmc_spi.c | ||
mmci.c | ||
mmci.h | ||
msm_sdcc.c | ||
msm_sdcc.h | ||
mvsdio.c | ||
mvsdio.h | ||
mxcmmc.c | ||
of_mmc_spi.c | ||
omap_hsmmc.c | ||
omap.c | ||
pxamci.c | ||
pxamci.h | ||
s3cmci.c | ||
s3cmci.h | ||
sdhci-cns3xxx.c | ||
sdhci-of-core.c | ||
sdhci-of-esdhc.c | ||
sdhci-of-hlwd.c | ||
sdhci-of.h | ||
sdhci-pci.c | ||
sdhci-pltfm.c | ||
sdhci-pltfm.h | ||
sdhci-s3c.c | ||
sdhci-spear.c | ||
sdhci.c | ||
sdhci.h | ||
sdricoh_cs.c | ||
sh_mmcif.c | ||
tifm_sd.c | ||
tmio_mmc.c | ||
tmio_mmc.h | ||
via-sdmmc.c | ||
wbsd.c | ||
wbsd.h |