On Thu, Dec 05, 2019 at 11:22:47PM +0100, Pavel Machek wrote: > Hi! > > > From: Ming Lei <ming.lei@xxxxxxxxxx> > > > > [ Upstream commit c53336c8f5f29043fded57912cc06c24e12613d7 ] > > > > Logical block size is the lowest possible block size that the storage > > device can address. Max segment size is often related with controller's > > DMA capability. And it is reasonable to align max segment size with > > logical block size. > > > SDHCI sets un-aligned max segment size, and causes ADMA error, so > > fix it by aligning max segment size with logical block size. > > If un-aligned max segment sizes are problem, should we add checks to > prevent setting them? > > At least these set unaligned problems; is that a problem? > > drivers/block/nbd.c: blk_queue_max_segment_size(disk->queue, UINT_MAX); > drivers/block/virtio_blk.c: blk_queue_max_segment_size(q, -1U); > drivers/block/rbd.c: blk_queue_max_segment_size(q, UINT_MAX); In theory, all segment size should be aligned, however the above MAX value just means the queue hasn't max segment size limit, so it won't be applied actually. Thanks, Ming