linux_dsm_epyc7002/drivers/mmc/host
Russell King 71fcbda0fc mmc: sdhci: fix command response CRC error handling
When we get a response CRC error on a command, it means that the
response we received back from the card was not correct.  It does not
mean that the card did not receive the command correctly.  If the
command is one which initiates a data transfer, the card can enter the
data transfer state, and start sending data.

Moreover, if the request contained a data phase, we do not clean this
up, and this results in the driver triggering DMA API debug warnings,
and also creates a race condition in the driver, between running the
finish_tasklet and the data transfer interrupts, which can trigger a
"Got data interrupt" state dump.

Fix this by handing a response CRC error slightly differently: record
the failure of the data initiating command, but allow the remainder of
the request to be processed normally.  This is safe as core MMC checks
the status of all commands and data transfer phases of the request.

If the card does not initiate a data transfer, then we should time out
according to the data transfer parameters.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
[ Fix missing parenthesis around bitwise-AND expression, and tweak subject ]
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: stable@vger.kernel.org # v4.5+
Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2016-02-29 11:03:15 +01:00
..
android-goldfish.c mmc: android-goldfish: remove incorrect __iomem annotation 2015-09-01 14:19:11 +02:00
atmel-mci.c mmc: atmel-mci: remove the MMC_DATA_STREAM flag 2016-02-29 11:02:58 +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: remove the MMC_DATA_STREAM flag 2016-02-29 11:02:59 +01:00
cb710-mmc.c mmc: cb710: Move away from using deprecated APIs 2013-10-30 20:26:37 -04:00
cb710-mmc.h mmc: cb710: use to_platform_device() 2016-01-05 18:04:57 +01:00
davinci_mmc.c mmc: davinci_mmc: remove the MMC_DATA_STREAM flag 2016-02-29 11:02:59 +01:00
dw_mmc-exynos.c mmc: dw_mmc: remove the prepare_command hook 2016-02-29 11:03:09 +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: k3: Fix modalias to make module auto-loading work 2015-06-01 09:07:05 +02: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: remove the prepare_command hook 2016-02-29 11:03:09 +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: remove the prepare_command hook 2016-02-29 11:03:09 +01:00
dw_mmc.c mmc: dw_mmc: fix num_slots setting 2016-02-29 11:03:11 +01:00
dw_mmc.h mmc: dw_mmc: add hw_reset support 2016-02-29 11:03:09 +01:00
jz4740_mmc.c mmc: jz4740_mmc: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:00 +01:00
Kconfig mmc: sdhci-pic32: Add PIC32 SDHCI host controller driver 2016-02-29 11:03:12 +01:00
Makefile mmc: sdhci-pic32: Add PIC32 SDHCI host controller driver 2016-02-29 11:03:12 +01:00
mmc_spi.c mmc: mmc_spi: add checks for dma mapping error 2016-02-08 15:22:04 +01: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
mmci.c mmc: mmci: support 8bit mode on the Nomadik 2016-01-14 10:47:46 +01:00
mmci.h mmc: mmci: Add Qcom specific rx_fifocnt logic. 2014-07-09 11:25:57 +02:00
moxart-mmc.c mmc: moxart: Fix module autoload for OF platform driver 2015-10-26 15:59:57 +01:00
mtk-sd.c mmc: mediatek: change some dev_err to dev_dbg 2015-12-22 11:32:17 +01:00
mvsdio.c mmc: mvsdio: delete platform data code path 2015-12-22 11:32:12 +01:00
mvsdio.h
mxcmmc.c mmc: mxcmmc: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:00 +01:00
mxs-mmc.c mmc: mxs: Constify platform_device_id 2015-06-01 09:06:50 +02:00
of_mmc_spi.c mmc: of_mmc_spi: Add IRQF_ONESHOT to interrupt flags 2015-12-22 11:32:17 +01:00
omap_hsmmc.c mmc: omap_hsmmc: don't print uninitialized variables 2016-02-29 11:02:52 +01:00
omap.c mmc: omap: Fix module autoload for OF platform driver 2015-10-26 15:59:58 +01:00
pxamci.c mmc: pxamci: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:01 +01:00
pxamci.h
rtsx_pci_sdmmc.c mmc: rtsx: Constify platform_device_id 2015-06-01 09:06:50 +02:00
rtsx_usb_sdmmc.c mmc: rtsx: Constify platform_device_id 2015-06-01 09:06:50 +02:00
s3cmci.c mmc: s3cmci: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:01 +01:00
s3cmci.h mmc: s3cmci: port DMA code to dmaengine API 2014-07-09 11:26:13 +02:00
sdhci_f_sdh30.c mmc: sdhci_f_sdh30: Fix the size passed to sdhci_alloc_host 2015-06-01 09:06:46 +02:00
sdhci-acpi.c mmc: sdhci-acpi: enable sdhci-acpi device to suspend/resume asynchronously 2016-02-29 11:02:52 +01:00
sdhci-bcm2835.c mmc: sdhci-bcm2835: Actually enable the clock 2015-06-01 09:56:07 +02:00
sdhci-bcm-kona.c mmc: sdhci-bcm-kona: fix logic to check for 8-bit data width 2015-10-26 15:59:55 +01:00
sdhci-cns3xxx.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-dove.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-esdhc-imx.c mmc: sdhci-esdhc-imx: correct the tuning-step setting 2015-12-22 11:32:09 +01:00
sdhci-esdhc.h mmc: sdhci-of-esdhc: support both BE and LE host controller 2015-10-26 16:00:08 +01:00
sdhci-iproc.c mmc: sdhci-iproc: use sdhci_pltfm_unregister directly 2016-02-29 11:02:55 +01:00
sdhci-msm.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
sdhci-of-arasan.c mmc: sdhci-of-arasan: Remove no-hispd and no-cmd23 quirks for sdhci-arasan4.9a 2016-02-29 11:02:48 +01:00
sdhci-of-at91.c mmc: sdhci-of-at91: fix pm runtime unbalanced issue in error path 2016-02-02 14:09:14 +01:00
sdhci-of-esdhc.c mmc: sdhci-of-esdhc: add/remove some quirks according to vendor version 2015-12-22 11:32:11 +01:00
sdhci-of-hlwd.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-pci-core.c mmc: sdhci-pci: Fix card detect race for Intel BXT/APL 2016-02-11 11:39:56 +01:00
sdhci-pci-data.c mmc: sdhci-pci: Add support for drive strength selection for SPT 2015-06-01 09:07:14 +02:00
sdhci-pci-o2micro.c mmc: sdhci-pci: Make sdhci_pci_o2_fujin2_pci_init() static 2015-10-26 16:00:05 +01:00
sdhci-pci-o2micro.h mmc: sdhci-pci: Make sdhci_pci_o2_fujin2_pci_init() static 2015-10-26 16:00:05 +01:00
sdhci-pci.h mmc: sdhci-pci: Add more PCI IDs for Intel controllers 2015-10-26 16:00:19 +01:00
sdhci-pic32.c mmc: sdhci-pic32: Add PIC32 SDHCI host controller driver 2016-02-29 11:03:12 +01:00
sdhci-pltfm.c mmc: core: enable support for the standard "wakeup-source" property 2015-12-22 11:32:01 +01: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,pxav3}: Use of_match_ptr() macro 2015-06-01 09:06:53 +02:00
sdhci-pxav3.c mmc: sdhci-pxav3: fix error handling of armada_38x_quirks 2015-10-08 19:24:23 +02: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: Constify platform_device_id 2015-06-01 09:06:52 +02:00
sdhci-sirf.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
sdhci-spear.c Update Viresh Kumar's email address 2015-07-17 16:39:53 -07:00
sdhci-st.c mmc: sdhci-st: Fix modalias to make module auto-loading work 2015-06-01 09:07:07 +02:00
sdhci-tegra.c mmc: tegra: use correct accessor for misc ctrl register 2016-01-05 18:04:56 +01:00
sdhci.c mmc: sdhci: fix command response CRC error handling 2016-02-29 11:03:15 +01:00
sdhci.h mmc: sdhci: Allow override of mmc host operations 2016-02-11 11:39:56 +01:00
sdricoh_cs.c mmc: sdricoh_cs: Less checks in sdricoh_init_mmc() after, error detection 2016-02-29 11:02:45 +01:00
sh_mmcif.c mmc: sh_mmcif: use to_delayed_work 2016-02-29 11:02:46 +01:00
sh_mobile_sdhi.c mmc: sdhi: use faster clock handling on RCar Gen2 2016-02-29 11:03:05 +01:00
sunxi-mmc.c mmc: sunxi-mmc: remove the MMC_DATA_STREAM flag 2016-02-29 11:03:02 +01:00
tifm_sd.c mmc: Convert pr_warning to pr_warn 2014-09-24 10:13:09 +02:00
tmio_mmc_dma.c mmc: tmio_dma: remove debug messages with little information 2016-02-29 11:03:03 +01:00
tmio_mmc_pio.c mmc: tmio: disable clock before changing it 2016-02-29 11:03:06 +01:00
tmio_mmc.c mmc: TMIO: Use devm_request_irq() 2015-06-01 09:06:48 +02:00
tmio_mmc.h mmc: tmio: mmc: tmio: tmio_mmc_data has .chan_priv_?x 2015-03-05 21:54:17 +05:30
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: usdhi6rol0: use to_delayed_work 2016-02-29 11:02:46 +01: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 unneded semicolons 2015-10-26 15:59:54 +01:00
wbsd.c mmc: wbsd: Remove unneded semicolon 2015-10-26 15:59:53 +01:00
wbsd.h
wmt-sdmmc.c mmc: constify of_device_id array 2015-03-23 14:13:49 +01:00