Re: [PATCH 4.19 240/321] mmc: core: align max segment size with logical block size

From: Ming Lei
Date: Thu Dec 05 2019 - 19:54:57 EST


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