mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
mmc: block: Don't do single-sector reads during recovery
See https://github.com/raspberrypi/linux/issues/5019 If an SD card has degraded performance such that IO operations time out then the MMC block layer will leak SG DMA mappings in the swiotlb during recovery. It retries the same SG and this causes the leak, as it is mapped twice - once in sdhci_pre_req() and again during single-block reads in sdhci_prepare_data(). Resetting the card (including power-cycling if a regulator for vmmc is present) ought to be enough to recover a stuck state, so for now don't try single-block reads in the recovery path. Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
This commit is contained in:
committed by
Dom Cobley
parent
be587b3f24
commit
214539ef02
@@ -1949,7 +1949,7 @@ static void mmc_blk_mq_rw_recovery(struct mmc_queue *mq, struct request *req)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rq_data_dir(req) == READ && brq->data.blocks >
|
if (0 && rq_data_dir(req) == READ && brq->data.blocks >
|
||||||
queue_physical_block_size(mq->queue) >> 9) {
|
queue_physical_block_size(mq->queue) >> 9) {
|
||||||
/* Read one (native) sector at a time */
|
/* Read one (native) sector at a time */
|
||||||
mmc_blk_read_single(mq, req);
|
mmc_blk_read_single(mq, req);
|
||||||
|
|||||||
Reference in New Issue
Block a user