On Tue, Sep 10, 2019 at 02:03:17AM +0000, Yoshihiro Shimoda wrote:
> I'm sorry for causing this trouble on your environment. I have a proposal to
> resolve this issue. The mmc_host struct will have a new caps2 flag
> like MMC_CAP2_MERGE_CAPABLE and add a condition into the queue.c like below.
> 
> +     if (host->caps2 & MMC_CAP2_MERGE_CAPABLE &&
> +         host->max_segs < MMC_DMA_MAP_MERGE_SEGMENTS &&
>           dma_get_merge_boundary(mmc_dev(host)))
>               host->can_dma_map_merge = 1;
>       else
>               host->can_dma_map_merge = 0;
> 
> After that, all mmc controllers disable the feature as default, and if a mmc
> controller has such capable, the host driver should set the flag.

That sounds sensible to me.  Alternatively we'd have to limit
max_sectors to 16-bit values for sdhci if using an iommu that can
merge.

Reply via email to