linux/drivers/mmc
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
..
card MMC highlights for 3.9: 2013-02-26 09:31:09 -08:00
core mmc: sdio: bind acpi with sdio function device 2013-03-22 12:26:54 -04:00
host mmc: dw_mmc: Handle unaligned data submission correctly 2013-03-22 12:53:49 -04:00
Kconfig mmc: explicitly mention SDIO support in Kconfig 2008-10-12 11:04:36 +02:00
Makefile mmc: sdhci-pci: add platform data 2012-01-11 23:58:47 -05:00