On Tue, 3 Dec 2019 09:05:23 +0000 Jisheng Zhang wrote: > > + Christoph > > On Tue, 3 Dec 2019 11:33:15 +0800 Jun Nie wrote: > > > > > > > Jisheng Zhang <Jisheng.Zhang@xxxxxxxxxxxxx> 于2019年12月3日周二 上午10:47写道: > > > > > > On Mon, 2 Dec 2019 22:41:04 +0800 Jun Nie wrote: > > > > > > > > > > > > > > > > > > DMA memory cannot cross specific boundary for some SDHCI controller, > > > > such as DesignWare SDHCI controller. Add DMA memory boundary dt > > > > property and workaround the limitation. > > > > > > IMHO, the workaround could be implemented in each SDHCI host driver. > > > > > > eg. drivers/mmc/host/sdhci-of-dwcmshc.c > > > > > Thanks for the suggestion! Christoph's suggestion can prevent the the issue > > from the block layer, thus the code can be shared across all > > To be honest, I did consider similar solution from block layer, I.E set > the seg_boundary_mask, when submitting the workaround last year, but per > my understanding, SDHCI limitation is the physical DMA addr can't span one > specific boundary, so setting seg_boundary_mask w/ blk_queue_segment_boundary > can't work. I'm not sure I understand blk_queue_segment_boundary() properly. > May Christoph help to clarify? what's more, not all scatterlist in mmc are from block layer, for example, __mmc_blk_ioctl_cmd(), mmc_test.c etc.. How do we ensure the boundary is fine in these cases? > > From another side, drivers/ata/libata-sff.c also workaround the 64K phy DMA > boundary limitation itself rather than from block layer. > Thanks > > > controllers. I prefer > > his suggestions. > > > > Jun >