mmc: mvsdio: Use sg_miter for PIO
authorLinus Walleij <linus.walleij@linaro.org>
Sat, 27 Jan 2024 00:19:52 +0000 (01:19 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 13 Feb 2024 12:40:56 +0000 (13:40 +0100)
commit2761822c00e8c271f10a10affdbd4917d900d7ea
tree17f9439e6d7df8117e63a38f5d04ab6d81041518
parent3ee0e7c3e67cab83ffbbe7707b43df8d41c9fe47
mmc: mvsdio: Use sg_miter for PIO

Use the scatterlist memory iterator instead of just
dereferencing virtual memory using sg_virt().
This make highmem references work properly.

This driver also has a bug in the PIO sglist handling that
is fixed as part of the patch: it does not travers the
list of scatterbuffers: it will just process the first
item in the list. This is fixed by augmenting the logic
such that we do not process more than one sgitem
per IRQ instead of counting down potentially the whole
length of the request.

We can suspect that the PIO path is quite untested.

Suggested-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/linux-mmc/20240122073423.GA25859@lst.de/
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20240127-mmc-proper-kmap-v2-5-d8e732aa97d1@linaro.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/mvsdio.c