linux-hardened/drivers/mmc/host
Doug Anderson fa0c328343 mmc: dw_mmc: Only enable CD after setup and only if needed
We really don't want to get a card detect interrupt during probe time
since it can confuse things.  Let's disable the card detect interrupt
until we're in a really good place: the end of probe.  Let's also
simply avoid enabling the card detect interrupt if it's not used.

It appears that (at least on rk3288) when vqmmc is turned on it can
cause a bogus "card detect" interrupt.  That meant that we were
getting a predictable card detect interrupt while we were in
mmc_add_host().  On the version of the kernel I'm working with at
least (3.14), this is not a great time to get a card detect interrupt
since I think that we don't grab all the needed locks in
mmc_add_host() and children.  I put stack dumps in dw_mci_setup_bus()
and found that I could see two distinct stack crawls that looked like:

Caller one:
* dw_mci_setup_bus
* dw_mci_set_ios
* mmc_power_up
* mmc_start_host
* mmc_add_host

Caller two:
* dw_mci_setup_bus
* dw_mci_set_ios
* mmc_set_chip_select
* mmc_go_idle
* mmc_rescan
* process_one_work
* worker_thread
* kthread

Signed-off-by: Doug Anderson <dianders@chromium.org>
Tested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2015-03-23 14:13:31 +01:00
..
android-goldfish.c mmc: remove unnecessary platform_set_drvdata() 2013-05-26 14:23:23 -04:00
atmel-mci-regs.h
atmel-mci.c mmc: atmel-mci: use SET_RUNTIME_PM_OPS() macro 2014-12-13 00:44:11 +01:00
au1xmmc.c mmc: host: drop owner assignment from platform_drivers 2014-10-20 16:20:56 +02:00
bfin_sdh.c mmc: bfin_sdh: Move away from using deprecated APIs 2013-10-30 20:26:36 -04:00
cb710-mmc.c mmc: cb710: Move away from using deprecated APIs 2013-10-30 20:26:37 -04:00
cb710-mmc.h mmc: host: use platform_{get,set}_drvdata() 2013-06-27 11:13:02 -04:00
davinci_mmc.c mmc: host: drop owner assignment from platform_drivers 2014-10-20 16:20:56 +02:00
dw_mmc-exynos.c mmc: dw_mmc: exynos: Support eMMC's HS400 mode 2015-03-23 14:13:28 +01:00
dw_mmc-exynos.h mmc: dw_mmc: exynos: Support eMMC's HS400 mode 2015-03-23 14:13:28 +01:00
dw_mmc-k3.c mmc: dw_mmc: fix possible build error 2014-03-03 14:00:56 -05:00
dw_mmc-pci.c mmc: dw_mmc-pci: Remove superflous #else condition on CONFIG_PM_SLEEP 2014-09-09 13:59:05 +02:00
dw_mmc-pltfm.c mmc: dw_mmc: Add support for IMG Pistachio 2014-11-26 14:31:03 +01:00
dw_mmc-pltfm.h mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
dw_mmc-rockchip.c mmc: dw_mmc: rockchip: add support MMC_CAP_RUNTIME_RESUME capability 2015-03-23 14:13:28 +01:00
dw_mmc.c mmc: dw_mmc: Only enable CD after setup and only if needed 2015-03-23 14:13:31 +01:00
dw_mmc.h mmc: dw_mmc: exynos: Support eMMC's HS400 mode 2015-03-23 14:13:28 +01:00
jz4740_mmc.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
Kconfig mmc: Add hardware dependencies for sdhci-pxav3 and sdhci-pxav2 2015-01-30 11:44:42 +01:00
Makefile mmc: sdhci: host: add new f_sdh30 2015-01-20 09:32:37 +01:00
mmc_spi.c mmc: don't request CD IRQ until mmc_start_host() 2014-09-23 09:01:36 +02:00
mmci.c mmc: mmci: Get rid of dead code in mmci_dma_setup 2015-01-28 12:32:18 +01:00
mmci.h mmc: mmci: Add Qcom specific rx_fifocnt logic. 2014-07-09 11:25:57 +02:00
mmci_qcom_dml.c mmc: mmci: Add qcom dml support to the driver. 2014-09-09 13:58:46 +02:00
mmci_qcom_dml.h mmc: mmci: Add qcom dml support to the driver. 2014-09-09 13:58:46 +02:00
moxart-mmc.c mmc: moxart: fix probe logic 2015-02-04 09:42:29 +01:00
msm_sdcc.c mmc: msm_sdcc: Use platform_set|get_drvdata 2014-11-10 12:40:34 +01:00
msm_sdcc.h
mvsdio.c mmc: mvsdio: don't use devm_pinctrl_get_select_default() in probe 2015-01-19 09:56:21 +01:00
mvsdio.h
mxcmmc.c mmc: mxcmmc: fix the default value for available voltages into mxcmci_probe 2014-11-10 12:40:25 +01:00
mxs-mmc.c mmc: mxs-mmc: remove unneeded NULL check 2015-01-19 09:56:10 +01:00
of_mmc_spi.c mmc: mmc_spi: Support CD/RO GPIOs 2013-08-24 23:45:22 -04:00
omap.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
omap_hsmmc.c mmc: omap_hsmmc: use mmc_of_parse to parse common mmc configuration. 2015-01-19 09:56:29 +01:00
pxamci.c mmc: pxamci: prepare and unprepare the clocks 2014-09-09 13:59:24 +02:00
pxamci.h
rtsx_pci_sdmmc.c mmc: rtsx: check sg_count before long data xfer 2015-01-21 13:58:44 +01:00
rtsx_usb_sdmmc.c mmc: rtsx_pci: Set power related cap2 macros 2014-09-24 11:20:16 +02:00
s3cmci.c mmc: Convert pr_warning to pr_warn 2014-09-24 10:13:09 +02:00
s3cmci.h mmc: s3cmci: port DMA code to dmaengine API 2014-07-09 11:26:13 +02:00
sdhci-acpi.c mmc: sdhci-acpi: fix copy'n'paste typos in the comments 2015-01-19 09:56:28 +01:00
sdhci-bcm-kona.c mmc: sdhci-bcm-kona: Handle error from mmc_of_parse() 2015-01-19 09:56:12 +01:00
sdhci-bcm2835.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-cns3xxx.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-dove.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-esdhc-imx.c mmc: sdhci-esdhc-imx: Fixup runtime PM conditions during ->probe() 2015-01-19 09:56:22 +01:00
sdhci-esdhc.h mmc: sdhci: convert sdhci_set_clock() into a library function 2014-05-22 07:26:32 -04:00
sdhci-msm.c mmc: sdhci-msm: Convert to mmc_send_tuning() 2014-12-08 09:21:06 +01:00
sdhci-of-arasan.c mmc: sdhci-of-arasan: Omit superfluous error messages 2014-11-10 12:40:46 +01:00
sdhci-of-esdhc.c mmc: sdhci-of-esdhc: Handle error from mmc_of_parse() 2015-01-19 09:56:13 +01:00
sdhci-of-hlwd.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-pci-data.c
sdhci-pci-o2micro.c mmc: sdhci-pci-o2micro: Fix Dell E5440 issue 2014-11-10 12:40:25 +01:00
sdhci-pci-o2micro.h mmc: sdhci-pci-o2micro: Add SeaBird SeaEagle SD3 support 2014-05-22 08:40:44 -04:00
sdhci-pci.c mmc: sdhci-pci: Remove redundant runtime PM idle callback 2015-01-19 09:56:22 +01:00
sdhci-pci.h mmc: sdhci-pci: Add support for Intel SPT 2015-01-12 10:14:58 +01:00
sdhci-pltfm.c mmc: sdhci-pltfm: Do not use parent as the host's device 2014-09-09 13:58:58 +02:00
sdhci-pltfm.h mmc: sdhci-pltfm: export pltfm suspend/resume api 2014-01-13 12:48:06 -05:00
sdhci-pxav2.c mmc: sdhci-pxav2: Drop unused struct sdhci_pxa 2014-11-10 12:40:30 +01:00
sdhci-pxav3.c mmc: sdhci-pxav3: Modify clock settings for the SDR50 and DDR50 modes 2015-01-29 13:08:46 +01:00
sdhci-s3c-regs.h mmc: sdhci-s3c: remove platform dependencies 2013-04-19 13:51:23 +02:00
sdhci-s3c.c mmc: sdhci-s3c: solve problem with sleeping in atomic context 2015-02-04 13:39:14 +01:00
sdhci-sirf.c mmc: sdhci-sirf: Remove redundant use of mmc_gpio_free_cd() 2015-01-19 09:56:15 +01:00
sdhci-spear.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sdhci-st.c mmc: sdhci-st: Do cleanup while mmc_of_parse() return an error 2015-01-19 09:56:14 +01:00
sdhci-tegra.c mmc: tegra: Write xfer_mode, CMD regs in together 2015-01-29 11:21:58 +01:00
sdhci.c mmc: sdhci: switch voltage before sdhci_set_ios in runtime resume 2015-01-29 11:28:06 +01:00
sdhci.h mmc: sdhci: add a voltage switch callback function 2015-01-20 09:29:16 +01:00
sdhci_f_sdh30.c mmc: sdhci: host: fix odd_ptr_err.cocci warnings 2015-01-21 12:33:43 +01:00
sdricoh_cs.c mmc: sdricoh_cs: Move away from using deprecated APIs 2013-10-30 20:28:32 -04:00
sh_mmcif.c mmc: remove .owner field for drivers using module_platform_driver 2014-09-09 13:59:04 +02:00
sh_mobile_sdhi.c mmc: tmio: remove TMIO_MMC_HAVE_CTL_DMA_REG flag 2015-01-20 10:24:36 +01:00
sunxi-mmc.c The clock framework changes for 3.20 contain the usual driver additions, 2015-02-21 12:30:30 -08:00
tifm_sd.c mmc: Convert pr_warning to pr_warn 2014-09-24 10:13:09 +02:00
tmio_mmc.c mmc: tmio: tmio_mmc_host has .bus_shift 2015-01-20 10:22:48 +01:00
tmio_mmc.h mmc: tmio: enable SoC specific DMA buswidth settings 2015-01-20 10:23:31 +01:00
tmio_mmc_dma.c mmc: tmio: remove TMIO_MMC_HAVE_CTL_DMA_REG flag 2015-01-20 10:24:36 +01:00
tmio_mmc_pio.c mmc: tmio: tmio_mmc_host has .multi_io_quirk 2015-01-20 10:22:40 +01:00
toshsd.c mmc: toshsd: Fix unbalanced locking 2015-01-19 09:56:07 +01:00
toshsd.h mmc: add Toshiba PCI SD controller driver 2014-11-26 14:30:58 +01:00
usdhi6rol0.c mmc: host: drop owner assignment from platform_drivers 2014-10-20 16:20:56 +02:00
ushc.c mmc: ushc: Fix incorrect parameter in sizeof 2014-02-25 15:42:20 -05:00
via-sdmmc.c mmc: via-sdmmc: Move away from using deprecated APIs 2013-10-30 20:28:36 -04:00
vub300.c mmc: vub300: remove unreachable return value handling 2015-01-21 12:02:05 +01:00
wbsd.c mmc: host: drop owner assignment from platform_drivers 2014-10-20 16:20:56 +02:00
wbsd.h
wmt-sdmmc.c mmc: host: drop owner assignment from platform_drivers 2014-10-20 16:20:56 +02:00