kernel_optimize_test/drivers/mmc/host
Yusuke Goda b78d6c5f51 tmio_mmc: don't clear unhandled pending interrupts
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>
2010-09-09 18:57:23 -07:00
..
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 MMC: Add support for the controller on JZ4740 SoCs. 2010-08-05 13:26:18 +01:00
Kconfig s5pc110: SDHCI-s3c support on s5pc110 2010-08-20 09:34:55 -07:00
Makefile Merge branch 'msm-mmc_sdcc' of git://codeaurora.org/quic/kernel/dwalker/linux-msm 2010-08-13 18:06:37 -07:00
mmc_spi.c Merge branch 'next-spi' of git://git.secretlab.ca/git/linux-2.6 2010-08-14 11:54:09 -07:00
mmci.c Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-08-03 14:31:24 -07:00
mmci.h
msm_sdcc.c Merge branch 'msm-mmc_sdcc' of git://codeaurora.org/quic/kernel/dwalker/linux-msm 2010-08-13 18:06:37 -07:00
msm_sdcc.h Merge branch 'msm-core' of git://codeaurora.org/quic/kernel/dwalker/linux-msm 2010-08-12 10:07:32 -07:00
mvsdio.c
mvsdio.h
mxcmmc.c
of_mmc_spi.c
omap_hsmmc.c omap_hsmmc: add erase capability 2010-08-12 08:43:30 -07:00
omap.c
pxamci.c
pxamci.h
s3cmci.c
s3cmci.h
sdhci-cns3xxx.c sdhci-pltfm: add support for CNS3xxx SoC devices 2010-08-11 08:59:03 -07:00
sdhci-of-core.c Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-08-12 09:11:31 -07:00
sdhci-of-esdhc.c
sdhci-of-hlwd.c
sdhci-of.h
sdhci-pci.c mmc: add ricoh e822 pci id 2010-08-11 08:59:05 -07:00
sdhci-pltfm.c sdhci-pltfm: add support for CNS3xxx SoC devices 2010-08-11 08:59:03 -07:00
sdhci-pltfm.h sdhci-pltfm: add support for CNS3xxx SoC devices 2010-08-11 08:59:03 -07:00
sdhci-s3c.c drivers/mmc/host/sdhci-s3c.c: use the correct mutex and card detect function 2010-08-20 09:34:55 -07:00
sdhci-spear.c
sdhci.c sdhci: add no hi-speed bit quirk support 2010-08-20 09:34:55 -07:00
sdhci.h sdhci: add no hi-speed bit quirk support 2010-08-20 09:34:55 -07:00
sdricoh_cs.c
sh_mmcif.c
tifm_sd.c
tmio_mmc.c
tmio_mmc.h tmio_mmc: don't clear unhandled pending interrupts 2010-09-09 18:57:23 -07:00
via-sdmmc.c
wbsd.c
wbsd.h