linux_dsm_epyc7002/drivers/mmc/host
Markos Chandras cfbeb59c7a mmc: dw_mmc: Handle unaligned data submission correctly
Commit f9c2a0dc42
"mmc: dw_mmc: Fix PIO mode with support of highmem" introduced
a regression since v3.2 making the mmc_test hang on test #13
with a "Data starvation by host timeout" interrupt.

This is because, sg_mapping_iter is used to iterate through the
data which spans on multiple pages. The problem is detected on
unaligned data submission where the code previously checked for
!(sg_next(host->sg)) which is true because we only have a single
scatter/gather list which then expands to multiple pages.
Therefore, the driver incorrectly assumed that this was the last
list item and submitted unaligned data to the mmc device. This
overflowed the FIFO on the device before all the data were written
to it. The code was fixed to only submit unaligned data when we are
handling the last sg_miter item by checking whether we reached
the desired data length or not.

The patch was tested against mmc_test and all the tests passed.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
Acked-by: Seungwon Jeon <tgih.jun@samsung.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
2013-03-22 12:53:49 -04:00
..
android-goldfish.c mmc: goldfish: emulated MMC device 2013-02-24 14:37:04 -05:00
atmel-mci-regs.h mmc: atmel-mci: AP700x PDC is not connected to MCI 2012-10-03 10:05:23 -04:00
atmel-mci.c ARM: arm-soc: Header cleanups 2012-12-12 11:45:16 -08:00
au1xmmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
bfin_sdh.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
cb710-mmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
cb710-mmc.h mmc: Driver for CB710/720 memory card reader (MMC part) 2009-06-13 22:42:58 +02:00
davinci_mmc.c mmc: davinci_mmc: use module_platform_driver_probe() 2013-03-22 12:29:01 -04:00
dw_mmc-exynos.c mmc: dw_mmc: Make dw_mci_exynos_probe static 2013-03-12 07:48:36 -04:00
dw_mmc-pci.c Drivers: mmc: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
dw_mmc-pltfm.c mmc: Convert to devm_ioremap_resource() 2013-01-25 12:21:47 -08:00
dw_mmc-pltfm.h mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
dw_mmc.c mmc: dw_mmc: Handle unaligned data submission correctly 2013-03-22 12:53:49 -04:00
dw_mmc.h mmc: dw_mmc: add support for implementation specific callbacks 2012-10-03 10:05:19 -04:00
jz4740_mmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
Kconfig MMC highlights for 3.9: 2013-02-26 09:31:09 -08:00
Makefile mmc: goldfish: emulated MMC device 2013-02-24 14:37:04 -05:00
mmc_spi.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
mmci.c ARM: 7630/1: mmc: mmci: Fixup and cleanup code for DMA handling 2013-01-28 14:14:48 +00:00
mmci.h ARM: 7631/1: mmc: mmci: Add new VE MMCI variant 2013-01-28 14:11:53 +00:00
msm_sdcc.c ARM: msm: move platform_data definitions 2012-09-14 11:17:35 +02:00
msm_sdcc.h mmc: msm_sdcc: Use MCI_INT_MASK0 for PIO interrupts 2011-10-26 15:43:37 -04:00
mvsdio.c mmc: mvsdio: use module_platform_driver_probe() 2013-03-22 12:29:12 -04:00
mvsdio.h mmc: SDIO driver for Marvell SoCs 2009-03-24 21:30:03 +01:00
mxcmmc.c ARM: arm-soc: Cleanups on various subarchitectures 2012-12-12 11:51:39 -08:00
mxs-mmc.c MMC highlights for 3.9: 2013-02-26 09:31:09 -08:00
of_mmc_spi.c mmc: mmc_spi: Fix return value evaluation of irq_of_parse_and_map() 2013-02-24 14:37:10 -05:00
omap_hsmmc.c mmc: omap_hsmmc: support deferred probing for GPIOs 2013-03-22 11:51:49 -04:00
omap.c ARM: arm-soc: Header cleanups 2012-12-12 11:45:16 -08:00
pxamci.c mmc: remove use of __devinit 2012-11-28 12:28:18 -08:00
pxamci.h
rtsx_pci_sdmmc.c mmc: rtsx_pci_sdmmc: Don't execute power up sequence repeatedly 2013-03-22 12:35:42 -04:00
s3cmci.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
s3cmci.h s3cmci: DMA fixes 2009-10-01 16:11:15 -07:00
sdhci-acpi.c Drivers: mmc: remove __dev* attributes. 2013-01-03 15:57:14 -08:00
sdhci-bcm2835.c mmc: bcm2835: set SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK 2013-02-24 14:37:16 -05:00
sdhci-cns3xxx.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
sdhci-dove.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-esdhc-imx.c mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock 2013-02-24 14:37:09 -05:00
sdhci-esdhc.h mmc: sdhci-esdhc: break out early if clock is 0 2012-09-04 13:58:06 -04:00
sdhci-of-esdhc.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-of-hlwd.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
sdhci-pci-data.c mmc: sdhci-pci: add platform data 2012-01-11 23:58:47 -05:00
sdhci-pci.c mmc: sdio: bind acpi with sdio function device 2013-03-22 12:26:54 -04:00
sdhci-pltfm.c mmc: sdhci-pltfm: Fix timeout on t4240's sdhci controller 2013-03-22 12:36:52 -04:00
sdhci-pltfm.h mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock 2013-02-24 14:37:09 -05:00
sdhci-pxav2.c mmc: sdhci-pltfm: Add a common clk API implementation of get_timeout_clock 2013-02-24 14:37:09 -05:00
sdhci-pxav3.c mmc: sdhci-pxav3: add pm runtime support 2013-02-24 14:37:13 -05:00
sdhci-s3c.c mmc: sdhci-s3c: let device core setup the default pin configuration 2013-03-22 12:33:21 -04:00
sdhci-spear.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
sdhci-tegra.c mmc: tegra: use mmc_of_parse to get the support of standard MMC DT bindings 2013-03-19 13:10:09 -04:00
sdhci.c mmc: sdhci: Don't ignore regulator_enable() return value 2013-03-22 12:40:05 -04:00
sdhci.h mmc: sdhci: enhance preset value function 2013-02-24 14:37:11 -05:00
sdricoh_cs.c mmc: Add module.h to drivers/mmc users assuming implicit presence. 2011-10-26 16:32:19 -04:00
sh_mmcif.c mmc: sh_mmcif: use mmc_of_parse() to parse standard MMC DT bindings 2013-02-24 14:37:21 -05:00
sh_mobile_sdhi.c mmc: sh_mobile_sdhi: use managed resource allocations 2013-02-24 14:37:23 -05:00
tifm_sd.c Autogenerated GPG tag for Rusty D1ADB8F1: 15EE 8D6C AB0E 7F0C F999 BFCB D920 0E6C D1AD B8F1 2012-01-14 12:32:16 -08:00
tmio_mmc_dma.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-03-29 15:34:57 -07:00
tmio_mmc_pio.c mmc: tmio: add support for the VccQ regulator 2013-02-24 14:37:24 -05:00
tmio_mmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
tmio_mmc.h mmc: tmio_mmc: remove unused sdio_irq_enabled flag 2012-03-27 12:20:17 -04:00
ushc.c USB: convert some miscellanies drivers to use module_usb_driver() 2011-11-18 09:52:10 -08:00
via-sdmmc.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
vub300.c mmc: vub300: add missing usb_put_dev 2012-12-06 13:55:03 -05:00
wbsd.c mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
wbsd.h
wmt-sdmmc.c mmc: wmt-sdmmc: Use resource_size() 2013-03-22 12:38:46 -04:00