On 11/21/2017, 04:08 PM, Ulf Hansson wrote: > Subject: [PATCH] mmc: sdhci: Fix bounce buffer overflow ... > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c ... > @@ -3651,22 +3652,29 @@ int sdhci_setup_host(struct sdhci_host *host) > spin_lock_init(&host->lock); > > /* > + * Maximum number of sectors in one transfer. Limited by SDMA boundary > + * size (512KiB). Note some tuning modes impose a 4MiB limit, but this > + * is less anyway. > + */ > + mmc->max_req_size = 524288; > + > + /* > * Maximum number of segments. Depends on if the hardware > * can do scatter/gather or not. > */ > - if (host->flags & SDHCI_USE_ADMA) > + if (host->flags & SDHCI_USE_ADMA) { > mmc->max_segs = SDHCI_MAX_SEGS; > - else if (host->flags & SDHCI_USE_SDMA) > + } else if (host->flags & SDHCI_USE_SDMA) { > mmc->max_segs = 1; > - else /* PIO */ > + if (swiotlb_max_segment()) { > + unsigned int max_req_size = (1 << IO_TLB_SHIFT) * > + IO_TLB_SEGSIZE; > + mmc->max_req_size = min(mmc->max_req_size, > + max_req_size); > + } > + } else { /* PIO */ > mmc->max_segs = SDHCI_MAX_SEGS; It seems to work fine. FWIW the debug output is: [ 0.708312] mmc0: max_segs=1 max_req_size=262144 h->flags=00004001 thanks, -- js suse labs -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html