On Mon, Jan 22, 2024, at 14:39, Christoph Hellwig wrote: > On Mon, Jan 22, 2024 at 10:26:30AM +0100, Arnd Bergmann wrote: >> > A better indicator might be the use of page_address in the I/O path, >> > which usually comes in the form of using the sg_virt() helper. >> > For drivers/mmc/ that seems to be: davinci_mmc, moxart-mmc, mvsdio, >> > mxcmmc, omap, sdhci-esdhc-mcf and sh_mmcif. >> >> Out of these, I think only the mvsdio one is actually use >> on boards with highmem: davinci, moxart, mxc (imx3) and omap2 >> are old enough to never have had more than 256MB or so of RAM, >> and mcf (m68k) and sh can't even be built with CONFIG_HIGHMEM. > > It would be good to fix the one or two that could use highmem and add a > depends on !HIGHMEM for the others I would prefer a runtime check here, as one might still have a multiplatform kernel where one machine can use highmem and another machine can use one of these drivers, e.g. in imx_v6_v7_defconfig. > and then kill the bounce setup in > mmc. It turn out in addition to the one legacy ISA SCSI driver and the > two parport SCSI driver usb-storage actually also sets this flag, > which might be a road blocker, but at this point I'm getting ready > to just pull the plug if it doesn't break using embedded platforms > using mmc entirely. Agreed. I've added the maintainers for the Marvell Armada platform to Cc, maybe one of them can look into this, see the thread at [1] for this. The problem in the mvsdio.c is the sg_virt(data->sg) in mvsd_setup_data(), which will stop working when the MMC layer stops using bounce buffers for highmem pages. Arnd [1] https://lore.kernel.org/all/20240122073423.GA25859@xxxxxx/