On Thu, 25 Jan 2024 at 09:50, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > > The MMC core sets BLK_BOUNCE_HIGH for devices where dma_mask > is unassigned. > > For the majority of MMC hosts this path is never taken: the > OF core will unconditionally assign a 32-bit mask to any > OF device, and most MMC hosts are probed from device tree, > see drivers/of/platform.c: > > of_platform_device_create_pdata() > dev->dev.coherent_dma_mask = DMA_BIT_MASK(32); > if (!dev->dev.dma_mask) > dev->dev.dma_mask = &dev->dev.coherent_dma_mask; > > of_amba_device_create() > dev->dev.coherent_dma_mask = DMA_BIT_MASK(32); > dev->dev.dma_mask = &dev->dev.coherent_dma_mask; > > MMC devices that are probed from ACPI or PCI will likewise > have a proper dma_mask assigned. > > The only remaining devices that could have a blank dma_mask > are platform devices instantiated from board files. > > These are mostly used on systems without CONFIG_HIGHMEM > enabled which means the block layer will not bounce, and in > the few cases where it is enabled it is not used anyway: > for example some OMAP2 systems such as Nokia n800/n810 will > create a platform_device and not assign a dma_mask, however > they do not have any highmem, so no bouncing will happen > anyway: the block core checks if max_low_pfn >= max_pfn > and this will always be false. > > Should it turn out there is a platform_device with blank > DMA mask actually using CONFIG_HIGHMEM somewhere out there > we should set dma_mask for it, not do this trickery. > > Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Applied for next, thanks! Kind regards Uffe > --- > drivers/mmc/core/queue.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c > index a0a2412f62a7..316415588a77 100644 > --- a/drivers/mmc/core/queue.c > +++ b/drivers/mmc/core/queue.c > @@ -351,8 +351,6 @@ static void mmc_setup_queue(struct mmc_queue *mq, struct mmc_card *card) > if (mmc_can_erase(card)) > mmc_queue_setup_discard(mq->queue, card); > > - if (!mmc_dev(host)->dma_mask || !*mmc_dev(host)->dma_mask) > - blk_queue_bounce_limit(mq->queue, BLK_BOUNCE_HIGH); > blk_queue_max_hw_sectors(mq->queue, > min(host->max_blk_count, host->max_req_size / 512)); > if (host->can_dma_map_merge) > > --- > base-commit: 6613476e225e090cc9aad49be7fa504e290dd33d > change-id: 20240124-mmc-no-blk-bounce-high-d84e8898c707 > > Best regards, > -- > Linus Walleij <linus.walleij@xxxxxxxxxx> >