On Thu, Jun 13, 2019 at 07:20:15PM +0900, Yoshihiro Shimoda wrote: > +static unsigned int mmc_get_max_segments(struct mmc_host *host) > +{ > + return host->can_merge ? BLK_MAX_SEGMENTS : host->max_segs; > +} Note that BLK_MAX_SEGMENTS is really a little misnamed, it just is a BLK_DEFAULT_SEGMENTS. I think you are better of picking your own value here (even if 128 ends up ok) than reusing this somewhat confusing constant. > + /* > + * Since blk_mq_alloc_tag_set() calls .init_request() of mmc_mq_ops, > + * the host->can_merge should be set before to get max_segs from > + * mmc_get_max_segments(). > + */ > + if (host->max_segs < BLK_MAX_SEGMENTS && > + device_iommu_mapped(mmc_dev(host))) > + host->can_merge = 1; > + else > + host->can_merge = 0; > + can_merge seems a little too generic a name to me. Maybe can_iommu_merge?